读书人

请教怎么回收在其他函数中动态分配的内

发布时间: 2012-10-06 17:34:01 作者: rapoo

请问如何回收在其他函数中动态分配的内存?
如:

C/C++ code
#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分配的内存,当然进程退出后会自动回收}

进程退出后会自动回收malloc分配的内存,问题是自己如何手动回收在test()中malloc分配的内存呢?free似乎不行!麻烦回答一下,谢谢!

[解决办法]
C/C++ code
#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)
C/C++ code
char *test(){        char *p = (char *)malloc(30);        p = "THIS IS TEST";        return p;}
[解决办法]
C/C++ code
#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的指针改变了 指向了一个常量地址 已经不是你分配时的指针地址了 所以必须内存泄露

读书人网 >C语言

热点推荐