????????????????
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 函数会有什么样的结果?
答:
(1)能够输出hello
(2)内存泄漏??????????why
问题点数:20、回复次数:4Top
1 楼qhfu(改个名字)回复于 2006-03-04 18:27:28 得分 5
(1)能够输出hello
===========
确实是动态分配了内存,malloc,要程序中回收,编译器不会回收。
(2)内存泄漏??????????why
============
内存泄露就是因为你没有把内存回收了。局部分配的内存,没有回收Top
2 楼cxc014(有心插柳柳不活,无心栽花花开花?)回复于 2006-03-04 18:31:59 得分 5
free ?????whereTop
3 楼zhNKUjw(淡淡的云彩悠悠的游)回复于 2006-03-04 19:01:21 得分 5
malloc和free应该成对出现的
既然为str分配了空间,在使用完毕就要手动释放它
可以将其定义在一个与GetMemory对应的函数(比如ReleaseMemory)里面,使用完毕用它来释放内存Top
4 楼ugg(逸学堂(exuetang.net))回复于 2006-03-04 20:33:55 得分 5
请问运行Test 函数会有什么样的结果?
答:
(1)能够输出hello
(2)内存泄漏??????????why
void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
free(str); // 加上这一句就可以防止内存泄漏了。
}
Top




