请问如何回收在其他函数中动态分配的内存?
如:
#include <stdio.h>char *test(){ char *p = (char *)malloc(30); p = "THIS IS TEST"; return p;}int main(){ char *a = test(); printf("%s\n", a); //使用完后如何手动回收在test()中malloc分配的内存,当然进程退出后会自动回收}#include <stdio.h>char *test(){ char *p = (char *)malloc(30); p = "THIS IS TEST";//因为有这一行, 修改了p的指向. 要么去掉这行 return p;}int main(){ char *a = test();//a指向的是"THIS IS TEST"常指针, test()之后你再也不可能找到malloc printf("%s\n", a); //使用完后如何手动回收在test()中malloc分配的内存,当然进程退出后会自动回收}
[解决办法]
1)
char *test(){ char *p = (char *)malloc(30); p = "THIS IS TEST"; return p;}
[解决办法]
#include <stdio.h>char *test(){ char *p = (char *)malloc(30); // p指向分配好的内存空间 p = "THIS IS TEST"; // p又指向了别的内存,做甚? strcpy(p, "THIS IS TEST"); // 赋值应该是strcpy return p;}int main(){ char *a = test(); printf("%s\n", a); free(a); // 正常释放}
[解决办法]
对于这个程序来说 不可能了 因为你把p的指针改变了 指向了一个常量地址 已经不是你分配时的指针地址了 所以必须内存泄露