c/c++内存释放应注意的问题
来源:互联网 发布:怎样应聘淘宝客服 编辑:程序博客网 时间:2024/05/08 11:02
转载▼
分类: C /C
C/C++程序运行时的内存结构:
(1)全局变量、用static修饰的局部变量都存储在静态数据区
(2)程序指令和大部分字面常量都存储在代码区
(3)大部分函数的形参和局部变量都存储在栈区
(4)程序中动态分配的内存都存储在堆区
(5)一小部分函数形参和局部变量存储在CPU寄存器组中
使用malloc和free的注意事项:
(1)刚刚分配的动态内存的初始值是不确定的
(2)不能对同一指针(地址)连续两次进行free操作
(3)不能对指向静态存储区(全局变量)或内存区局部变量)的指针应用free(但可以对空指针NULL应用
free)
(4)对一个指针应用free之后,它的值不会改变,但它指向了一个无效的内存区,这时称该指针为“悬
空指针”
(5)如果没有及时释放某块动态内存,并且将指向它的指针指向了别处,就会造成“内存泄露”
(6)执行malloc和free含糊有一定的代价,所以对于较小的变量不应该放在动态内存之中,并且尽量避
免频繁的分配和释放动态内存
使用堆内存时的常见错误:
(1)内存分配未成功,却使用了它
(2)内存分配虽然成功,但是尚未初始化就引用它。(误认为初始值为0)
(3)内存分配成功并且已经初始化,但操作越过了内存的边界
(4)忘记了释放内存,造成了内存泄露
(5)释放了内存却继续使用它
关于悬空指针:
(1)一个指针变量,如果不为NULL且没有指向有效的内存地址,都称为“悬空指针”
(2)通过悬空指针访问其指向的内存区会使程序产生不可预知的错误
如何避免悬空指针:
(1)定义指针变量时检查对其进行正确的初始化
(2)在用free或delete释放内存之后,应及时将相应的指针置为NULL
阅读全文
0 0
- C/C++内存释放应注意的问题
- c/c++内存释放应注意的问题
- C语言中内存动态分配应注意的问题
- 一些c语言学习新手应注意的问题
- C语言数组应注意问题
- c/c++内存管理注意的问题
- json-c需要注意的内存问题
- OCI释放句柄时应注意的问题
- 内存-文件映射应注意的问题
- C/C++应注意的那些事儿
- C#PictureBox释放图片内存问题
- delete void* 释放内存问题(C++)
- c语言 内存释放
- [C#] 内存占用释放
- [C#] 内存占用释放
- c语言,内存释放。
- [C#] 内存占用释放
- C内存申请释放
- Nginx最新模块—ngx_http_mirror_module分析
- Cannot add extension with name 'android'......
- P1115 最大子段和
- CLR via C#垃圾回收
- IOS 有导航栏的时候,坐标从(0,64)变成从(0,0)开始
- c/c++内存释放应注意的问题
- CS开发和运维技术总结
- 操作系统
- 在Ubuntu/Linux环境下使用MySQL:安装MySQL Workbench
- IntelliJ 快捷--创建main函数
- 8.11 J
- 报表开发工具 web Java报表工具 企业级Web报表工具
- win10实现屏幕边缘热区切换虚拟桌面
- 时间管理