变量的内存分配
来源:互联网 发布:延长壳牌工资知乎 编辑:程序博客网 时间:2024/05/17 04:08
1.内存的分配方式
(1)从静态存储区域分配,内存在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在。如全局变量,static变量
(2) 从栈上创建。函数局部变量的存储单元可以在栈上创建。函数调用时自动分配,调用结束时这些内存单元被自动释放。栈内存分配运算内置于处理器的指令集中,效率高,但内存容量有限。
(3)从堆上分配,亦称为动态存储区,molloc和new申请任意多少的内存,free和delete释放内存。
2.常见内存错误
(1)内存尚未分配成功。
解决办法:在使用之前检查指针是否为NULL
如果p是函数的参数,在入口处用assert(p != NULL)进行检查
如果用molloc或new来申请内存,用if(p == NULL)或if(p != NULL)进行防错
(2)内存分配成功,但尚未初始化就进行引用
(3)释放了内存继续使用
对象关系过于复杂
return语句写错。注意不要返回栈内存上的指针或引用
free或delete释放内存后,没有将指针设置为NULL,导致野指针。
参考高质量C/C++编程关于内存的部分,特别是4个关于内存的习题
关于molloc free与new delete的用法:
1.molloc和free是C++/C的标准库函数,而new和delete是C++的运算符
2. new是强类型分配,调用构造函数并初始化,molloc仅仅分配内存空间但不初始化。
new是自适应类型,molloc需强制类型转换
3.delete调用对象的析构函数,释放内存,而free仅仅是释放内存
4.虽然都申请分配内存,但申请的位置不同。new是在自由存储区(free store).而molloc是在堆(heap)上申请(ISO14882内存管理部分)
- 变量的内存分配
- 变量内存的分配
- 变量的内存分配
- 变量内存的分配
- 变量的内存分配情况
- 变量内存的分配情况
- 变量的内存分配:内存对齐
- 变量的内存分配:内存对齐
- 变量的内存分配:内存对齐 .
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- C语言的变量的内存分配
- Proguard 简述
- POJ 1028 用栈模拟浏览器的前进与后退
- Oracle PL/SQL 触发器(trigger)大全
- 『myan』 程序员是真正的主角——SD2.0大会有感
- weblogic开发EJB
- 变量的内存分配
- 为什么Oraclelistener启动后自动关闭
- R12的帐套新功能粗解
- RIFF文件规范
- spring的使用:注入与new
- 谦虚的向大家问个技术问题,树型结构的排序问题
- Oracle中启动和关闭的各种方式
- C# 实现WinForm窗口最小化到系统托盘代码
- Windows Phone 7 开发 31 日谈——第17日:枢轴控件