|
|
在DX中,我建立了一个模型加载类class Mesh,类中有一个指针LPDIRECT3DTEXTURE9* m_pD3DTexture;这是一个纹理数组指针,我在加载模型之前需要创建一个纹理数组,用来保存模型纹理信息,数组个数根据模型来定,这样调用
m_pD3DTexture = new LPDIRECT3DTEXTURE9[m_dwNums];//用作设置材质和纹理用然后在释放的时候这样释放
if (m_pD3DTexture)
{
for (DWORD i = 0; i < m_dwNums; ++i)
{
if (m_pD3DTexture != NULL)
{
m_pD3DTexture->Release();
//m_pD3DTexture = NULL;
//不应该有这句,m_pD3DTexture应该是用delete来释放的 但是由于无法调用delete来释放,所以暂且只能加上这句,来忽视那五个指针内存
}
}
}
这样就有了一个问题,本身被我用new来创建的数组空间(也就是那m_dwNums个指针变量)并没有释放,然而由于调用了
m_pD3DTexture->Release();,所以无法用
delete[] m_pD3DTexture来释放,由于D3D释放的时候把内存头也释放了,所以这样调用的话会出现BLOCK_VALID之类的一个异常抛出,这样该怎么办呢/?还是最开始的设计就有问题??帮忙下...呵呵谢了. [em11] |
|