メモリ管理: スコープとローカル ポインター変数
Q. メモリ管理に関して、次のコードのエラーは何ですか?
char* secret_message()
{
char message_buffer[100];
char* text = "Hey man!";
int n = 0;
while (text[n] != '\0')
n++;
for (int i = 0; i <= n ; i++)
message_buffer[i] = text[i];
return message_buffer;
}
答え。message_buffer は、関数の終了後に自動的に回収されるローカル変数だと思います。return ステートメントの直後に message_buffer が消えるため、この関数は無効なメモリ ロケーションへの参照を返します。
それが正しいか?
私にお知らせください。ありがとう、