使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突

使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突_第1张图片
问题代码

	if (!CreateProcess(NULL,L"pela.exe",NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
	{
		return 0;
	}

如果CreateProcess的第二个参数字符串是常量或者是储存在堆中的就会被写保护,崩溃。如果字符串定义到栈或者全局变量就不存在此问题了。
正确的办法

	WCHAR strCmdLine[] = L"pela.exe";
	if (!CreateProcess(NULL,strCmdLine,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
	{
		return 0;
	}

下面的办法会崩溃

	WCHAR *strCmdLine = L"pela.exe";
	if (!CreateProcess(NULL,strCmdLine,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
	{
		return 0;
	}

你可能感兴趣的:(debug,java,数据库,前端)