读书人

哪位高手能帮小弟我看看这段代码编译

发布时间: 2012-02-13 17:20:26 作者: rapoo

谁能帮我看看这段代码,编译能通过 运行时错误 用VC的
#include <iostream>
char * GetMemory(char *p, int num)
{
p=(char *)malloc(sizeof(char)*num);
return p;
}
int main()
{
char *str=NULL;
GetMemory(str,100);
strcpy(str, "hello ");
return 0;
}


[解决办法]
#include <iostream>
char * GetMemory(char **p, int num)
{
p=(char *)malloc(sizeof(char)*num);
return p;
}
int main()
{
char *str=NULL;
GetMemory(&str,100);
strcpy(str, "hello ");
return 0;
}
[解决办法]
上面两个人都说了,使用返回值,或者将形参改为引用,或者使用址传递方法

[解决办法]
但是上面的程序都没有注意free内存。有内存泄漏
[解决办法]
内存泄漏要从程序整体角度考虑,有时候一个函数内可以使得malloc和free不匹配,只要这样的函数对在外面匹配就可以了吧

读书人网 >C语言

热点推荐