重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
コードレビューをしているときに関数を見ました。
wchar_t* GetString(HINSTANCE hInstance, UINT SID)
{
wchar_t buf[2048] = {0};
LoadStringW(hInstance, SID, buf, sizeof(buf)/sizeof(wchar_t));
return &buf[0];
}
void SomeWork()
{
std::wstring str( GetString(hInst, 123) );
}
関数 return の直後にbufを破棄する必要があると思っていたので、ポインタ &buf[0] が無効になっている可能性があります。しかし、それはうまくいくようです、それはどのように機能しますか?そして、それは素晴らしいデザインですか?ありがとう。