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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值