读书人

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

发布时间: 2012-03-11 18:15:39 作者: rapoo

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

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

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

读书人网 >VC/MFC

热点推荐