可能的重复:
指向局部变量的指针 https://stackoverflow.com/questions/4570366/pointer-to-local-variable
我在这个网站上阅读了很多关于同一问题的其他主题,知道这很常见。但我想我很愚蠢,无法找出正确的方法来做到这一点。因此,我对这些问题中的另一个问题表示歉意,我希望有人能给我一个简单的解决方案和/或解释。
这是完整的代码:
Main.c
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <stdlib.h>
#include <tchar.h>
LPTSTR GetApplicationPath ( HINSTANCE Instance );
int APIENTRY _tWinMain ( HINSTANCE Instance, HINSTANCE PreviousInstance, LPTSTR CommandLine, int Show )
{
LPTSTR sMessage = GetApplicationPath ( Instance );
MessageBox (
NULL,
sMessage,
_T ( "Caption!" ),
MB_OK
);
return 0;
}
LPTSTR GetApplicationPath ( HINSTANCE Instance )
{
_TCHAR sReturn[MAX_PATH];
GetModuleFileName ( (HMODULE) Instance, sReturn, MAX_PATH );
return sReturn;
}
现在,您正在返回自动(堆栈)数组的地址。这是always错误的,因为一旦函数结束,内存的生命周期也会结束。
您需要使用 malloc(和 free)或其他动态分配。例如。:
_TCHAR *sReturn = malloc(sizeof(_TCHAR) * MAX_PATH);
我省略了错误检查。然后,调用代码应该释放它。之后MessageBox
in _tWinMain
:
free(sMessage);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)