关于动态内存分配,“删除”和“处置”C++ 运算符有什么区别?
问问题
647 次
3 回答
5
delete
将释放在非托管 C++ 中动态分配的内存
Dispose
将强制自定义对象在托管 C++/CLI 中实现一次性对象的维护
于 2009-11-07T06:23:24.750 回答
3
标准 C++ 中没有dispose
运算符(或标准函数,或类似的东西)——您是否在考虑某些特定的专有框架,例如 Microsoft 的 .NET“托管 C++”? delete
是标准的,它确实是一个运算符,并且在任何符合标准的实现中必须表现得像这样dispose
- 这是与 operator 的主要区别,也是与 operator , 和 的主要区别unicorn
,toothfairy
它们santaclaus
有很多共同点,因为这些都不存在! -) [[对不起弗吉尼亚...!]]
于 2009-11-07T06:24:07.883 回答
2
我假设这与 .NET 托管 C++ 有关,因为标准 C++ 没有“处置”的意义。
删除将释放用于存储对象的内存;此内存返回堆,可用于其他存储需求。
Dispose 将使对象有机会释放它获得的资源,例如文件句柄等。标准 C++ 会在析构函数中看到此类任务。
于 2009-11-07T06:23:19.923 回答