char* pArray = nullptr;
{
char buffer[64];
sprintf_s(buffer,"Time: 123456");
pArray = buffer;
}
cout<<pArray<<endl;
バッファがスタックに割り当て解除されていても、「Time:123456」が表示されます。ここで何が起こっているのですか?これは安全ですか?危険な?
未定義の動作です。メモリがクリアされていない可能性があります。
印刷ステートメントが機能するのは幸運です。オブジェクトがスコープ外になるか削除されると、メモリは解放済みとしてマークされ、実際には消去されません。プログラムはそれを再利用して上書きすることができます。
あなたはもうメモリを使用していませんが、データはまだそこにあります。
自分が何をしているのかを知らない限り、そのようなことをしてはいけません。
そのようなハックを使用して、いくつかのパラメーターを関数に渡すことができますが、それは非常に安全ではありません。