游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1934|回复: 3

请教各位一个有关内存释放的问题

[复制链接]

2

主题

25

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2010-6-26 20:23:00 | 显示全部楼层 |阅读模式
在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]

13

主题

35

帖子

35

积分

注册会员

Rank: 2

积分
35
发表于 2010-6-27 14:08:00 | 显示全部楼层

Re:请教各位一个有关内存释放的问题

纹理也可以这样初始化吗

1

主题

266

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2010-6-27 21:22:00 | 显示全部楼层

Re:请教各位一个有关内存释放的问题

我是用一个固定大小的数组,里面容纳的是 LPDIRECT3DTEXTURE9* 指针:
LPDIRECT3DTEXTURE9 *A[n];

创建时,依数量new每一个需要的数组单元:A = new XXX;(这只是个例子,当然啦,这里不应该是new出来的)。

释放内存时,依次Release()有内容的指针。

9

主题

132

帖子

145

积分

注册会员

Rank: 2

积分
145
QQ
发表于 2010-6-29 08:14:00 | 显示全部楼层

Re: 请教各位一个有关内存释放的问题

LPDIRECT3DTEXTURE9 是指针, delete[] m_pD3DTexture不会出现任何错误的,
可能你哪里读写内存错误了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-11-22 16:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表