用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 执行析构,并告知系统这块内存我不用了,可以被其他进程使用了。
但是,只要没有需要保护的内容操作这块内存,
那么 当前进程访问这个地址的内存还是不会出错的。
但是你无法保证这个时候它是安全的,
因为可能没有进程访问这个地址,
也可能有,
危险太大。