Memory 如果要修复f5和ctrl+;VisualStudio2008上的F5?

Memory 如果要修复f5和ctrl+;VisualStudio2008上的F5?,memory,directx,stack-overflow,directx-9,directx-10,Memory,Directx,Stack Overflow,Directx 9,Directx 10,当我构建我的项目并运行游戏时,我总是会遇到这个错误 Unhandled exception at 0x76fb2073 in Screen.exe: 0xC0000005: Access violation writing location 0x00000338 or sometimes 0x00000000. 调试此错误时,可以看到free.c源文件 跟踪此调试路径时,我发现screen.cpp文件的这一行出现了错误 if(FAILED(D3DXLoadMeshFromX(szNam

当我构建我的项目并运行游戏时,我总是会遇到这个错误

  Unhandled exception at 0x76fb2073 in Screen.exe: 0xC0000005: Access violation writing location 0x00000338 or sometimes 0x00000000.
调试此错误时,可以看到free.c源文件

跟踪此调试路径时,我发现screen.cpp文件的这一行出现了错误

if(FAILED(D3DXLoadMeshFromX(szName, D3DXMESH_SYSTEMMEM,
        m_pd3dDevice, &pAdjacencyBuffer,
        &pD3DXMtrlBuffer, NULL, &pMesh->dwNumMaterial,
        &pMesh->pMesh)))
我不知道为什么在我运行这个游戏时总是出现这个错误

需要你的帮助

哦,是的

我放弃了一件事

当我按F5键运行项目时,无论它是在全屏模式还是窗口模式下运行,游戏都运行良好


只有按Ctrl+F5时,才会出现错误。

我自己解决了这个问题。 我将文件构建为调试文件。
然后它就可以正常工作。

代码可能试图取消引用空指针。参数的值如下所示。szName:“hole.map”m_pd3dDevice为0x34847302 PadjacyBuffer为空pD3DXMtrlBuffer为空pMesh->dwNumMaterial为空pMesh->pMesh为空但当我在窗口模式下运行此操作或按f5时,则不会发生错误!您看到F5和Ctrl-F5之间行为不同的原因是,当您在调试器下运行时,Visual Studio会为您做一些事情:特别是它会将一些局部变量初始化为默认值,它会为内存分配添加填充,调试此类问题的最简单方法是添加日志记录,以便了解未初始化的内容。
if(FAILED(D3DXLoadMeshFromX(szName, D3DXMESH_SYSTEMMEM,
        m_pd3dDevice, &pAdjacencyBuffer,
        &pD3DXMtrlBuffer, NULL, &pMesh->dwNumMaterial,
        &pMesh->pMesh)))