c++中几种内存分配方法有什么区别?
像这么新,malloc等等......
谢谢
malloc分配未初始化的内存。马洛克不是type safe
new通过调用构造函数初始化分配的内存。新的关键字也是type safe
delete用于从堆中释放内存。
注意:- new
并且delete
是 C++ 特定的功能。
除了您可能希望看到的许多其他点。这是值得一读的一点
[16.4] 为什么我应该使用new而不是值得信赖的旧malloc()?
FAQ:new/delete调用构造函数/析构函数;new 是类型安全的, malloc 不是;new 可以被一个类覆盖。
FQA:FAQ 中提到的 new 的优点不是优点,因为构造函数、析构函数和操作符重载都是垃圾(看看没有垃圾收集会发生什么?),类型安全问题在这里真的很小(通常你有将 malloc 返回的 void* 转换为正确的指针类型,以将其分配给类型化的指针变量,这可能很烦人,但远非“不安全”)。
哦,使用可信赖的旧 malloc 可以使用同样可信赖的旧 realloc。太糟糕了,我们没有闪亮的新运营商更新或其他东西。
尽管如此,new 还不足以证明偏离整个语言使用的通用风格是合理的,即使该语言是 C++ 也是如此。特别是,如果您只是 malloc 对象,则具有非平凡构造函数的类将以致命的方式行为不端。那么为什么不在整个代码中使用 new 呢?人们很少重载 operator new,所以它可能不会妨碍你太多。如果他们确实超载了新的,你可以随时要求他们停下来。