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

哪位高手能帮小弟我看看这段代码,编译能通过 运行时异常 用VC的

2012-02-13 
谁能帮我看看这段代码,编译能通过 运行时错误 用VC的#include iostreamchar*GetMemory(char*p,intnum){p

谁能帮我看看这段代码,编译能通过 运行时错误 用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不匹配,只要这样的函数对在外面匹配就可以了吧

热点排行