Ниже приведены 3 функции. main() печатает как ожидалось. Теперь, в mycharstack() строка хранится в стеке, я думаю, так как "ch" выходит за пределы области видимости, она не должна возвращать строку. Как это работает правильно? Я думаю, строка, хранящаяся в mychar(), также находится в стеке. Должен ли он работать правильно? Я думаю, есть и другие ошибки в утечке кода и памяти, пожалуйста, дайте мне знать, если они есть. Я мог бы сделать это чище и проще с помощью std::string. Но я хочу понять, что происходит с char *.
#include <iostream>
using namespace std;
char* mychar()
{
return "Hello";
}
char* mycharstack()
{
char* ch = "Hello Stack";
return ch;
}
char* mycharheap()
{
char* ch = new char;
ch = "Hello Heap";
return ch;
}
int main()
{
cout << "mychar() = " << mychar() << endl;
cout << "mycharstack() = " << mycharstack() << endl;
cout << "mycharheap() = " << mycharheap() << endl;
system("PAUSE");
return 0;
}