malloc与free的凝问
//定义结构体
struct Test{
char str[100];
int a;
};
//申请N个Test内存空间,并返回该内存首地址。
struct test * createTest(int n){
struct Test * test = (struct Test *) malloc(sizeof(struct Test) * n);
return test;
}
main(){
struct Test * test = createTest(5);
for(int i =0;i < 5;i++){
printf("%d\t\t%s",test->a,test->str);
}
//释放test所占用的内存空间。
free(test);
}
凝问是:test的内存申请是在createTest函数中傅malloc申请的,但是内存的释放是在main函数(也有可能是在其它非main函数和非createTest)中调用free释放的,这样做是否正确。还是说在createTest函数中申请,一定要在createTest函数中释放。
struct Test{
char str[100];
int a;
};
//申请N个Test内存空间,并返回该内存首地址。
struct test * createTest(int n){
struct Test * test = (struct Test *) malloc(sizeof(struct Test) * n);
return test;
}
main(){
struct Test * test = createTest(5);
for(int i =0;i < 5;i++){
printf("%d\t\t%s",test->a,test->str);
}
//释放test所占用的内存空间。
free(test);
}
凝问是:test的内存申请是在createTest函数中傅malloc申请的,但是内存的释放是在main函数(也有可能是在其它非main函数和非createTest)中调用free释放的,这样做是否正确。还是说在createTest函数中申请,一定要在createTest函数中释放。
...全文
相关推荐
C语言基础之malloc和free函数详解
一、malloc()和free()的基本概念与用法1.
C语言实现malloc和free
在提供的`C实现malloc free.txt`文件中,可能会包含具体的代码实现,包括如何初始化内存池,如何进行内存分配和释放,以及如何处理各种边缘情况。
C++中malloc与free、new与delete的详解与应用
"C++编程语言中的内存管理是程序员必须掌握的关键技能之一,涉及到malloc与free以及new与delete这两个常见的内存分配和释放机制。虽然它们在功能上有相似之处,但使用时有明显的区别和注意事
C语言中多维数组的内存分配和释放(malloc与free)的方法
"本文主要介绍了在C语言中如何使用malloc函数动态分配多维数组的内存,以及如何通过free函数正确释放这些内存。内容包括二维数组和三维数组的分配与释放,同时也提到了内存管理的相关知识,如内存泄漏
基于malloc与free函数的实现代码及分析
本文主要探讨了C语言中内存管理的关键函数malloc与free的实现原理及其在面试中可能出现的应用。首先,我们回顾了《K&R》(C Programming Language)中关于内存分配和回收的基本


