首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

如何判断该内存块已经被DELETE了?

2012-03-11 
怎么判断该内存块已经被DELETE了???在堆上分配了一块,但是有好几个线程需要对该分配的内存进行操作(DELETE

怎么判断该内存块已经被DELETE了???
在堆上分配了一块,但是有好几个线程需要对该分配的内存进行操作(DELETE操作),我在一个线程里面怎样判断该内存块是否已经被其他的线程DELETE了呢??谢谢!

[解决办法]
_CrtIsValidHeapPointer 不推荐使用,类似的函数还有IsBadXXXPtr等。这类函数会造成Structured Exception,很危险。另外结果也不可靠,如果被Free的内存被回收了或者另外用了结果不一定正确。这类讨论网上很多。

uoyevoli 说的对,从设计角度上来讲,申请内存的人应该负责释放(这个规则适用于所有Resource)。几个Thread抢着释放内存设计上肯定有问题。
[解决办法]
用boost::shared_ptr,不需要考虑释放的问题。

热点排行