質問: IntToStr(31); printf("%s", t2->test); } ```
回答: こんにちは。 > > IntToStr関数を抜ける際にval変数が削除されているため(関数内スコープによる影響)かと思うのですが、 > > 自作の関数でchar*を上手く返すにはどのようにしたらよいでしょうか。 > > > これは勉強でしょうか? 実用でしょうか? 実用ならば、std::to_stringを使うことをお勧めします。 勉強ならば、かるくアドバイスです。C++はポインタではなく配列を関数の戻り値にすることは非常に難しいですが、配列以外のものは普通に戻せます。 下記のようなクラスを定義し、そのインスタンスをローカルに獲得して、dataへ変換結果を格納後、MyStringのインスタンスをreturnすることが可能です。 ``` class MyString { public: char data[256]; }; ``` > > またmain関数にTESTインスタンスのt1,t2を二種類の方法で書いているのですが、 > > これは同じ意味なのでしょうか。 > > > 違います。t1はスタック上に確保され、t2はヒープ上に確保されます。 ヒープ上に確保されたメモリは一般にきちんと開放するべきです。 (スタック上に確保されたメモリは、嫌でも開放されます。valのように。)