内存资源的申请与释放(CC++)
在嵌入式系统中动态内存申请存在比一般系统编程时更严格的要求,这是因为嵌入式系统的内存空间往往是十分有限的,不经意的内存泄露会很快导致系统的崩溃。
所以一定要保证你的malloc和free成对出现,如果你写出这样的一段程序:
{
char *p;
p = (char *)malloc(…);
if(p==NULL)
…;
… /* 一系列针对p的操作 */
return p;
}
在某处调用function(),用完function中动态申请的内存后将其free,如下:
…
free(q);
上述代码明显是不合理的,因为违反了malloc和free成对出现的原则,即"谁申请,就由谁释放"原则。不满足这个原则,会导致代码的耦合度增大,因为用户在调用function函数时需要知道其内部细节!
正确的做法是在调用处申请内存,并传入function函数,如下:
if(p==NULL)
…;
function(p);
…
free(p);
p=NULL;
而函数function则接收参数p,如下:
{
… /* 一系列针对p的操作 */
}
内存资源的申请与释放(CC++)相关推荐
- C++之内存管理:申请与释放
目录 前言 1.C/C++内存分布 1.1虚拟内存分段 1.2理解一些概念 1.2.1栈帧向下增长 1.2.2堆向上生长 1.2.3栈和堆会碰撞吗? 1.2.4关于const的说明 2.C语言中动态内 ...
- 05.内存管理:动态申请和释放内存
动态分配内存,进行内存管理 参考: 伙伴算法原理简介 linux 0.11源码 本文主要针对Linux0.11的malloc和free进行分析.是一种类似伙伴系统的内存管理方法,不过伙伴系统的内存通常 ...
- C++内存管理——空间申请、释放的新玩法
malloc free与new delete的不同 1.底层原理上的差异 malloc 只是在堆上开辟空间(以字节为单位),free配合malloc进行空间的释放 new针对自定义类型,会先调用ope ...
- 释放内存资源,我用empty.exe命令
Windows平台下的应用程序体积越来越大,随之,占用的内存资源也不断增加.很多程序占用大量内存资源后却不能及时释放,造成极大的浪费.虽然使用第三方内存管理软件可以释放空闲内存资源,但很有可能引起系统 ...
- C/C++申请和释放内存
new 和 delete 是 C++ 用于管理堆内存的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符.除此之外 ...
- 内存申请与释放(转)
释放内存?那要看你怎么申请的了 new->delete;malloc->free;GlobalAlloc->GlobalFree;VirtualAlloc(Ex)->Virtu ...
- 关于C/C++动态申请空间释放和内存泄漏问题介绍
1. 动态申请空间 1.1 基本内容 Ⅰ 动态申请的空间没有具体名称,只能通过指针间接访问(无论new还是malloc方式). Ⅱ 动态申请空间都是存放在堆中,有别于系统自动分配的空间是存放在堆栈中( ...
- fork练习、从进程角度考虑堆区内存申请与释放的有关问题
1.fork练习 1.1代码1; int main( int argc, char* argv[], char* envp[]) {int i = 0;for( ; i < 2; i++ ){f ...
- C/C++代码调试:快速定位内存的申请和释放的位置
1.问题 如果大型项目中出现类似于*** glibc detected *** logcacheinit: double free or corruption (fasttop): 0x0000000 ...
最新文章
- 神经网络到底是如何思考的?MIT精英们做了这么一个实验室来搞清楚
- mongodb模糊查询 php7_详解php7如何实现MongoDB模糊查询
- 如果我要....(生活版)
- java利用intellij进行类型推断
- Qt多文件传输功能实现及方法概述
- 民国大学教授收入有多高?
- 吴恩达机器学习之单变量线性回归理论部分
- jdbc数据源连接oracle,请教JDBC怎么连接ORACLE数据库
- 如何自动生成和安装requirements.txt依赖
- 18. Make interfaces esay to use correctly and hard to use incorrectly
- iometer使用教程linux,Iometer磁盘测试工具中文使用说明手册 二
- 中国东北到美洲比中国南边到美洲更近?
- [学习笔记-FPGA]Vivado出现信号差分问题
- 下载支持包时出现问题。要解决此问题,请参阅相应的 MATLAB Answer
- Object Track(十):经典论文JDE速读
- Excel:每隔几行求取一次平均值(基于函数功能)
- 运筹学 基础 知识点总结 (八)
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(7月29日)...
- 支付宝“刷脸支付”韩国遇冷 真相让人笑出眼泪
- C语言和C++中locale设置