首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-10-06 
请问如何回收在其他函数中动态分配的内存?如:C/C++ code#include stdio.hchar *test(){char *p (char

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

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的指针改变了 指向了一个常量地址 已经不是你分配时的指针地址了 所以必须内存泄露

热点排行