C++创建类对象的三种方式区别

xiaoxiao2021-02-28  147

c++中创建类对象有三种方式,用代码显示如下:

#include <iostream> using namespace std; class A { private: int n; public: A(int m):n(m) { } ~A(){} }; int main() { A a(1); //栈中分配 A b = A(1); //栈中分配 A* c = new A(1); //堆中分配   delete c; return 0; }

第一种和第二种都是在栈上分配内存,分别是隐式和显示创建。第三种是在堆上分配。这里涉及到栈上和堆上分配内存的区别。

栈和堆区别:

堆和栈最大可分配的内存的大小:栈内存是系统分配,在linux中可用ulimit -s查看,一般不超过8M。而堆内存最大可达到4G。堆和栈的内存管理方式:栈是系统数据结构,创建和释放都是系统操作。而堆是有开发者自己用malloc,free或者new delete来进行创建和释放操作的。堆和栈内存分配效率:栈内存分配是系统操作,有专门的寄存器存放地址,效率非常高。堆分配是按照c++库函数来操作的,从寻址到分配是非常复杂的过程,效率也极低
转载请注明原文地址: https://www.6miu.com/read-19009.html

最新回复(0)