读书人

用new和delete时的有关问题

发布时间: 2012-02-07 17:45:36 作者: rapoo

用new和delete时的问题
定义一个这样的结构体:
struct stCell{
unsigned Pic:6;
unsigned Num:14;
};

然后我在程序中这样给它分配空间:
stCell* m_CellLayerOne = new stCell[n];

当我结束时,又这样释放掉它所占的空间:
if( m_CellLayerOne )
{
delete[] m_CellLayerOne;
m_CellLayerOne[100]=33;//执行这一句时不出错!
m_CellLayerOne = NULL;
}

但当我执行delete[] m_CellLayerOne;后,m_CellLayerOne所占的空间并没有被释放掉

怎么样释放掉m_CellLayerOne所占的空间?

[解决办法]
delete 执行析构,并告知系统这块内存我不用了,可以被其他进程使用了。

但是,只要没有需要保护的内容操作这块内存,
那么 当前进程访问这个地址的内存还是不会出错的。

但是你无法保证这个时候它是安全的,
因为可能没有进程访问这个地址,
也可能有,
危险太大。

读书人网 >C++

热点推荐