-3

c++中几种内存分配方法有什么区别?

这么新,malloc等等......

谢谢

4

1 回答 1

0

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,所以它可能不会妨碍你太多。如果他们确实超载了新的,你可以随时要求他们停下来。

于 2013-09-08T04:17:22.577 回答