关于malloc和free的一点思考
来源:互联网 发布:光大证券软件下载 编辑:程序博客网 时间:2024/05/20 06:40
《c和指针》中给了一个子函数,在子函数中用malloc分配了内存,但由于要将申请到的内存指针返回给main函数,所以没有在子函数中用free释放内存。 我误以为所谓的malloc以后一定要free是指在同一个函数中了,其实是指在整个程序结束前一定要在适当地方自己释放内存,否则在子函数结束后,系统不会自动回收分配在堆上的内存(但退出main函数以后操作系统肯定会收回所有资源),这样就造成了堆内存泄露。
堆和栈的区别就在于此:
栈:函数执行结束时,系统自动释放存储单元。
堆:函数执行结束,编译器也不会释放存储单元,一定要我们自己控制。
#include "stdio.h"#include "string.h"#include "malloc.h"char* copy(char *oldStr);int main(){char origin[]="It is a testing programming";char *newStr;while(1){newStr=copy(origin);if(newStr!=NULL){//如果没有free,通过资源管理器可以看到内存占用量一直在增大//有了free,内存占用量保持不变free(newStr);printf("%s\n","succeed");}elseprintf("%s\n","fail");}return 0;}char* copy(char *oldStr){char *newStr=(char*)malloc(strlen(oldStr)+1);if(newStr!=NULL){strcpy(newStr,oldStr);return newStr;}return newStr;}
附关于内存管理、内存泄露的文章:http://www.cr173.com/html/18898_all.html
0 0
- 关于malloc和free的一点思考
- malloc-free和new-delete的思考
- 关于malloc和free
- 关于malloc和free
- 关于Malloc和free
- 关于malloc和free函数的用法
- 关于malloc和free的疑惑...
- 关于malloc和free函数的用法
- 关于malloc和free的讨论
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 关于malloc和free函数的用法
- 对 malloc 和 free 的一点学习笔记
- leetcode之Maximal Rectangle
- 忘记ecshop管理员用户和密码怎么办?ecshop账号密码重置工具,ecshop管理员密码重设工具
- 《Python核心编程》第6章 序列:字符串、列表和元组 练习
- .NET使用NPOI组件将数据导出Excel
- 中间件的基础知识
- 关于malloc和free的一点思考
- 将卡萨风华绝代分尅健康
- C语言隐式类型转换
- Win7系统激活工具之小马工具-您关闭了软件保护服务,请在服务中开启后重新激活
- VB.Net与VB
- access 2013的列表框无法选择条目的解决办法
- Unable to open /dev/sda的原因之一
- 设计模式之 Visitor 模式(访问者模式)
- Servlet 会话管理