本文档主要记录嵌入式C语言在子函数中应用malloc函数的方式,在实际项目中内存管理特别重要
一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行内存释放呢?
📋 个人简介
- 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
- 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
- 🎉 支持我:点赞👍+收藏⭐️+留言📝
-📣 系列专栏:嵌入式C编程🍁- 💬格言:写文档啊不是写文章,重要的还是直白!🔥
- 方式1:通过函数返回值
- 方式2:通过二级指针传参
【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项
- 1. 代码展示
- 2. 实验结果
- 3. 原理介绍
1. 代码展示
直接展示测试代码:
/*无参数,函数返回 malloc 的地址 */
int * test_malloc_ins(){
int *fun_val = (int)malloc(sizeof(int));
printf("test_malloc_ins fun_val addr = 0x%08x \r\n",fun_val);
return fun_val;
}
/*无返回值,函数通过二级指针传递地址*/
void test_malloc_ins_2(int **pointer){
int *fun_val = (int)malloc(sizeof(int));
printf("test_malloc_ins_2 fun_val addr = 0x%08x \r\n",fun_val);
* pointer = fun_val;
}
int main()
{
int *main_test;
printf("============测试1,函数返回值=============== \r\n");
main_test = test_malloc_ins();
printf(" main_test addr = 0x%08x \r\n",main_test);
printf("**** free ***** \r\n");
free(main_test);
main_test = NULL;
printf("after free main main_test addr = 0x%08x \r\n",main_test);
printf("\r\n");
printf("\r\n");
printf("\r\n");
printf("============测试2,函数不带返回值:二级指针法=============== \r\n");
int *p = NULL;
test_malloc_ins_2(&p);
printf("*p = 0x%08x \r\n",p);
free(p);
p = NULL;
printf("after free ,*p = 0x%08x \r\n",p);
}
2. 实验结果
3. 原理介绍
C/C++中在子函数中使用malloc分配内存和free释放内存的方法