C++堆栈管理

Stack (栈) heap(堆)

Stack,是存放在作用域(scope)的一块内存空间(memory space).例如当你调用函数,函数本身会形成一个stack用来放置接收到的参数,以及返回值.程序自动清理
在函数本身(function body)内声明的任何变量,其所使用的内存块都取自上述stack.
heap,或所谓system heap,是指由操作系统提供的一块global内存空间,程序可动态分配,(dynamic allocated),从而获得若干区块(blocks).

static 静态对象,作用域结束仍然存在,知道整个程序结束.
global objects 主函数main结束后释放.
内存泄漏(memory leak),new delete

Complex * pc = new Complex(1,2);
//编译器转化为
Complex *pc;
void *mem =operator new (sizeof(Complex));//分配内存 new--->malloc(n)
pc=static_cast<Complex*>(mem);//转型
pc->Complex::Complex(1,2);//调用构造函数

delete pc;
//编译器转化为
Complex::~Complex(pc);//析构函数
operator delete(pc);//释放内存-->其内部调用free(pc)

//arry new 一定要搭配array delete  编译器会记录需要调用析构函数的次数.
String * p =new String[3];
...
delete [] p;//唤起3次dtor

猜你喜欢

转载自blog.csdn.net/idream68/article/details/121450597