C++ 中 什么时候不用new?什么时候用new?

不new和new的区别

(1)类型分配的内存位置:
不new的类型对象内存分配是在栈区,这个地方比较小,一般只有几M的空间。一般对于内置类型比如int、char等如果需要的内存不多的情况下,可以不用new。这时候的内存会在当前函数结束后自动释放。

需要New的时候一般对于复杂类型,这时候内存分配是在堆区。比如自定义的类类型,或者需要大量内存空间的时候,比如你需要一个10000个int的数组,这时候你就需要new一下了。new的对象内存是需要我们手动释放的,否则会造成内存泄露。

(2)自动存储(自动变量、局部变量)VS 动态存储:

自动存储(自动变量、局部变量),比如int num = 1; 这个num就属于自动变量。所谓自动,代表它会自动申请内存,也会自动释放内存,自动变量是保存在栈里的(后进先出)。即局部变量在离开函数,或者离开它所属的代码块之后,就会被释放。

动态存储:我们自己来申请内存,自己来释放内存。我们希望自己去控制什么时候释放对象,这时候就要用到new了。new了之后,如果不调用相应delete的话,申请到的内存空间是永远都不会被释放的。

参考:https://www.cnblogs.com/smiler/p/4218110.html

https://zhidao.baidu.com/question/331371478504700365.html

你可能感兴趣的:(C++编程基础)