c++什么时候一定要用new分配堆内存

2025-03-11 02:33:32
推荐回答(2个)
回答1:

new是C++语法所规定的堆分配空间函数。
malloc是C语法所规定的对分配空间函数。
差别在于,C++是面向对象进行编程的。由于对象是包含构造函数的,在创建对象时,应当调用其构造函数,对其内部的数据进行初始化。new可以在分配空间的同时调用构造函数对此段空间进行初始化。而malloc只能够分配一段空间,不能调用构造函数。
所以在C++语言的开发中,要求使用new操作符进行堆空间的分配。

回答2:

一是需要一块大内存的时候,一般栈的大小在8M左右(具体看编译器,不过一般都不会太大),所以需要大内存时需要new。
二是给全局或作用域较大的指针分配对象时。
三是一般自定义的类对象用new,也不是必须用new。
以上是我个人的体会,不一定很准确,仅作参考。