struct Hoge
{
char *str;
};
struct Hoge make_struct( )
{
struct Hoge hoge;
hoge.str = "string"; // この文字列の有効範囲
return hoge;
}
int main( )
{
struct Hoge hoge = make_struct( );
printf("%s\n",hoge.str);
}
上記のようなコードで、make_struct( )内で str に代入している文字列の有効範囲は
make_struct( )内のみで
main( )で str を出力しても、"string" が出力される保証はない
と考えていますが、合っていますか?
例えば、
char tmp = "string";
hoge.str = (char*)malloc( strlen(tmp)+1 );
strcpy( hoge.str,tmp );
とすれば正しく動作するということでよいでしょうか?
よろしくお願いいたします。