一个基础题?
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test函数为什么会memory leak?
问题点数:20、回复次数:6Top
1 楼ken_henderson( )回复于 2002-02-13 21:39:31 得分 5
用了malloc之后没有free()啊,malloc在heap上分配内存所以要自己管理,malloc和free()应该是对出现的Top
2 楼ken_henderson( )回复于 2002-02-13 21:40:08 得分 0
c++里用new和delete是一样道理Top
3 楼songhtao(三十年孤独)回复于 2002-02-13 23:34:46 得分 0
没有释放内存Top
4 楼jinzhao2(金钊)回复于 2002-02-14 02:04:06 得分 5
不一定要free(不过这是坏习惯),代码在VC6(win2k)上调试无误Top
5 楼asliuyang(AK-47)回复于 2002-02-14 10:58:20 得分 5
函数申请的指针没有返回值。
这个函数没有作用啊Top
6 楼born_in70s(smiling)回复于 2002-02-14 17:20:45 得分 5
同意楼上的.
函数调用时,虽然str的地址被作为参数传递 (拷贝传递),但根据C编译器的常规,
在 GetMemory2 内被赋值的指针并不等于&str.
解决的办法: 或者把str定义成全局的, 或者修改 GetMemory2 的定义,返回
申请的指针就好了.
Top




