C++——堆、栈、静态存储区
栈 | 堆 | 静态存储区 | |
生命周期 | 函数结束即释放 |
new,malloc开辟,delete,free释放 释放前,一直存在 |
最长,程序退出才释放 |
存储类型 | 程序、局部变量 |
new,malloc申请的空间,用于存储数据 常量 |
static 修饰的变量,用于存储数据 |
大小 | VS2010默认1M |
VS2010,x32-2G;x64-128G(虚拟更多) |
VS2010默认2G |
1.三者比较
2.new和malloc比较
new | malloc() | |
属性 | C++关键字,操作符 | 库函数 |
参数 | 无须指定内存块的大小 | 需要 |
返回类型 | 类型严格与对象匹配 | void*,要强制转换 |
分配失败 | 抛出bac_alloc异常 | 返回NULL |
自定义类型 | 支持 | |
重载 | 允许重载 | 不允许 |
内存区域 | 自由存储区(free store) | 堆 |
3.运行过程解析