以下は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;
}