当我使用配置设置为release(对于x86和x64)进行编译时,我的程序无法完成.为了澄清,没有构建错误或执行错误.
在寻找问题的原因和解决方案之后,我发现程序只会崩溃作为发布版本 - 如何调试?这提出它是一个数组问题.虽然这解决了我的问题,但它给了我一些关于此事的见解(我将这里留给下一个人).
为了进一步混淆,只有当主线程上的子程序的执行时间大于约0ms时才会出现问题.
以下是相关的代码部分:
// Startup Progress Bar Thread
nPC_Current = 0; // global int
nPC_Max = nPC; // global int (max value nPC_Current will reach)
DWORD myThreadID;
HANDLE progressBarHandle = CreateThread(0, 0, printProgress, &nPC_Current, 0, &myThreadID);
/* Do stuff and time how long it takes (this is what increments nPC_Current) */
// Wait for Progress Bar Thread to Terminate
WaitForSingleObject(progressBarHandle, INFINITE);
Run Code Online (Sandbox Code Playgroud)
我的程序卡在上面的违规行是最后一个语句,程序等待创建的线程终止:
WaitForSingleObject(progressBarHandle, INFINITE);
Run Code Online (Sandbox Code Playgroud)
以下是进度条功能的代码:
DWORD WINAPI printProgress(LPVOID lpParameter)
{
int lastProgressPercent = -1; // …
Run Code Online (Sandbox Code Playgroud)