关于malloc使用经历
来源:互联网 发布:unity3d特效包下载 编辑:程序博客网 时间:2024/06/06 03:13
今天在写一个MCU的代码,遇到问题之前我是这样理解的:
1、在一个函数中,我申请了一段内存空间如下所示:
void Fun_1()
{
uint8 *temp = (uint8 *)malloc(20*sizeof(uint8));
......
}
我的理解:
我定义的指针是局部变量,在Fun_1被调用结束后,temp指向的这一片内存空间会自动被释放。程序运行起来后,MCU工作正常,到此问我感觉我的理解是对的,但是google了一下malloc的相关问题:
网络上的分析:
malloc出来的空间是在堆中,要你自己释放,除非程序退出,不然不会释放函数里的局部变量非malloc出来的都是在栈中,有系统管理,在函数执行完后就清理了。所以malloc分配的,你要自己写free...free完后在把指针赋值NULL。
我的反思:
按照上述分析,我发现我的理解好像是有问题的。因为MCU执行程序是不会退出的,一直是for(;;),那么也就是说我申请的内存空间是没有被free的,但是为什么我的程序没有挂死,还一直正常在跑呢?
我的疑问:
空间在堆中,和栈中,要如何理解?
2、在另一个函数中,我又申请了一段内存空间如下所示:
uint8 *Fun_2()
{
uint8 *temp = (uint8 *)malloc(20*sizeof(uint8));
......
return temp;
}
然后我在Fun_1中调用Fun_2,就出问题了:
void Fun_1()
{
uint8 *temp = (uint8 *)malloc(20*sizeof(uint8));
......
temp = Fun_2();
}
程序运行了不到1min钟,就挂死了,MCU重启恢复正常,malloc的使用肯定出问题了,但是和Fun_1比较,Fun_2又带来了什么不同的影响呢?
- 关于malloc使用经历
- 关于malloc的使用范例
- 关于free与malloc的使用
- 关于malloc
- 关于 Malloc
- 关于使用XMLHTTP的艰苦经历
- malloc 使用
- 关于STM32能否使用malloc申请动态内存的问题
- 关于STM32能否使用malloc申请动态内存的问题
- 关于VC++6.0使用过程中的一些经历
- 关于malloc和free
- 关于malloc的思考
- 关于malloc和free
- 关于malloc和new
- 关于 malloc(0)
- 关于malloc申请内存
- 关于malloc&free
- 关于malloc函数
- 关于c语言等于运算符的一点思考
- vs2012编译xapian问题2 ------U1077,返回代码0x2
- 完全背包 nyoj 311
- 自动创建设备文件
- QQ中抖动窗口的vc++实现方法
- 关于malloc使用经历
- Algorithm学习笔记 --- Just a Hook
- 第7周作业
- struts2源码分析之配置文件加载顺序
- SAS:SAS 常用过程之 统计描述过程proc univariate
- VxWorks的任务状态
- jQuery整理笔记七----几个经典表单应用
- 黑马程序员——关于LinkedList集合的索引
- 动态内存分配