如何在栈上开辟空间
new operator的作用:首先会在堆上开辟一段空间(调用的是operator new函数)
然后调用new operator后面的typename的构造函数(如果是普通类型则不需要)
最后new operator typename会返回一个指向该堆的内存地址.
如果想要在栈上调用new operator:需要做的就是不让new operator调用operator new函数
而是自己在栈上开辟好一段空间,然后通过调用placement new(是operator的重载)讲该空间的地址传入.
申请方式
stack:
由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间
heap:
需要程序员自己申请,并指明大小,在c中malloc函数
如p1 = (char *)malloc(10);
在C++中用new运算符
如p2 = (char *)malloc(10);
但是注意p1、p2本身是在栈中的。