可能重复:
可以在其范围之外访问局部变量的内存吗?
我在进行代码审查时看到了一个函数。
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) );
}
我认为buf应该在函数返回后立即销毁,因此指针 &buf[0] 可能无效。但它似乎工作正常,它是如何工作的?这是一个很好的设计吗?谢谢。