C++中定义类的对象:用new和不用new的区别

Point p1;

Point *p2=new Point();

p1 由系统创建并释放,不用担心会出现内存泄露,但是生命期只有在本区域的大括号内,出了大括号就没用了。

P2 是指针,要自己释放,用不好很危险,用好了功能强大,因为他可以赋值给全局的变量,一下子从局部变量变成全局变量,还能把对象作为函数返回值。

p1 是在栈空间申请Point大小的空间。new的内存区域是在栈,会自动分配空间,一般在局部变量时使用,函数结束后会自动释放空间。

p2 这是向堆空间申请一个sizeof(Point)大小的空间存放Point对象。(使用new 可以完成对象的构造) 。用new的内在区域是在堆,要自己手动分配空间,使用完后要手动释放空间, 另外栈中空间的分配一般在编译时就知道大小了,而如果要在运行时分配空间,就要使用堆了

原文地址:https://www.cnblogs.com/wufengv5/p/3982155.html