Я работал над программой и заметил кое-что, что не имело для меня особого смысла. std::string имеет функцию c_str(), которая возвращает строковое представление в стиле C (заканчивающееся NULL) объекта std::string. Что для меня не имеет смысла, так это то, как функция c_str() может вернуть const char *, не выделяя его в кучу. Функция, по-видимому, возвращает массив символов в стеке.
Я всегда думал, что функция может возвращать правильный указатель только в том случае, если значение, на которое она указывает, было выделено в куче с помощью такой функции, как malloc() или calloc().
Как c_str() может вернуть строку без использования кучи, и могу ли я как-то имитировать такое же поведение в своем собственном коде?
Спасибо всем заранее.