我有一个从高度图渲染地形的3d应用程序。为了从相机绘制一定距离的雾,我将相机的位置传递到.fx文件中的以下值:
uniform extern float3 gEyePosW;
通过我的地形对象中的这个句柄:
D3DXHANDLE mhEyePosW;
..
//(later, when I initialize handles for the object)
..
mhEyePosW = mFX->GetParameterByName(0, "gEyePosW");
在关闭应用程序之前,一切正常。我收到错误“HEAP CORRUPTION DETECTED:在正常块(#138)之后的0x00708580.CRT检测到应用程序在堆缓冲区结束后写入内存”。谷歌搜索显示,这通常是由于人们在无效位置写入阵列或者错误地访问缓冲区而引起的,但我不确定我在这行代码中做错了什么。
当我删除分配此句柄的行时,我不再收到内存泄漏。另外,我有许多其他句柄以相同的方式分配并且没有问题。
我是否应该以不同的方式分配此值,或者在析构函数中释放FX文件之前进行一些清理?
提前致谢。