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

请教怎么释放内存呢? C/C++

2012-08-08 
请问如何释放内存呢?C/C++char *test1(char *s){char *s1(char*)malloc(1)return s1}void test2(char *

请问如何释放内存呢? C/C++
char *test1(char *s)
{char *s1=(char*)malloc(1);
return s1;


}



void test2(char *s2) //上面返回来的结果作为参数进行运算。 这块内存该如何释放呢?
{


}

之所以这么涉及是因为有时候很多时候,内容长度不确定,所以动态申请内存。
注:并不是只调用一次,就可以了,涉及到循环和嵌套啊。

哪位高人,能够指点一下,该如何操作,释放内存?或者有其他好的设计?

谢谢非常感谢。


[解决办法]
函数要有释放内存的契约。
这个就属于调用者释放。
SysAllocString,和SysFreeString,两个api就有这样的契约。

这只是一种人为的约定,需要人去遵守。

[解决办法]
要不你自己搞个内存泄露检测的工具,要不自己写malloc函数和free函数,每次调用均打印出分配内存的地址,程序运行最后匹配一下,或者自动验证malloc此时和free此时是否一样。
[解决办法]
应该是直接free的。

不过建议尽量不要这样做,
动态内存分配尽量在那里分配,
在哪里释放,

建议看一下,《高质量程序设计》
这本书讲的挺好的。
[解决办法]
malloc free 系统会自动管理的。 如果不明确调用,只要用个全局指针即可,释放可以用宏来做即可

#define MALLOC(ptr, size) do { \
if(ptr){ \
free(ptr); \
} \
ptr = malloc(size);\
} while(0)


#define FREE(ptr) do{ \
if(ptr) { \
free(ptr); \
ptr = NULL;
} while(0)

热点排行