我使用new来分配缓冲区,如下所示:
BYTE *p;
p = new BYTE[20];
...
delete p;
删除p
后,如果我没有为p
分配NULL,是否有办法确定它是否已被释放?
答案 0 :(得分:1)
你无法确定,这是你通常依赖更高级机制来处理内存的主要原因之一,例如智能指针(shared_ptr
,unique_ptr
等),或者你的情况而不是std::vector
,以保证没有双delete
,忘记delete
或其他在undefined behavior土地上启动你的程序的令人讨厌的错误来处理原始记忆。