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

两道改错题,该怎么解决

2012-03-26 
两道改错题C/C++ codestruct Test{Test()Test(int)void fun(){}}void DoSomething(){Test a(1)Test b

两道改错题

C/C++ code
struct Test{    Test();    Test(int);    void fun(){};};void DoSomething(){    Test a(1);    Test b;    a.fun();    b.fun();}

C/C++ code
void DoSomething(){    .....    char *p;    p = malloc(1024);    if (NULL == p)        return;    .....    p = realloc(p,2048);    if (NULL == p)        return;    .....}


[解决办法]
C/C++ code
struct Test{    Test();    Test(int);    void fun(){};};void DoSomething(){    Test a(1);  // Test(int) 构造函数只有声明,没有定义,编译阶段会出错    Test b;     // Test() 构造函数只有声明,没有定义,编译阶段会出错    a.fun();    b.fun();}// 修改如下:struct Test{    Test(){}     // 修改1    Test(int){}  // 修改2    void fun(){};};void DoSomething(){    Test a(1);    Test b;    a.fun();    b.fun();}
[解决办法]
//编译下..
C/C++ code
void DoSomething(){    char *p;    p = (char*)malloc(sizeof(char)*1024);    if (NULL == p)        return;         ........    p = (char*)realloc(p,sizeof(char)*2048);    if (NULL == p)        return;}
[解决办法]
C/C++ code
// 第2个严格意义来说不是语法错误,而是可能会导致内存泄露void DoSomething(){    .....    char *p;    p = malloc(1024);    if (NULL == p)        return;    .....    p = realloc(p,2048); // 若realloc调用失败,则上面分配的1024个字节会造成无法访问,即内存泄露    if (NULL == p)        return;    .....}// 修改如下void DoSomething(){    .....    char *p;    p = malloc(1024);    if (NULL == p)        return;    .....    char *old_p;   // 1    old_p = p;     // 2    p = realloc(p,2048);    if (NULL == p){ // 3        free(old_p); // 4        return;    }               // 5    .....}
[解决办法]
探讨

C/C++ code

// 第2个严格意义来说不是语法错误,而是可能会导致内存泄露
void DoSomething()
{
.....
char *p;
p = malloc(1024);
if (NULL == p)
return;
.....
p = realloc(p,2048); // 若realloc调用失败,则上面……

[解决办法]
C/C++ code
void DoSomething(){    .....    char *p;    p = malloc(1024);    if (NULL == p)        return;    .....    p = realloc(p,2048);    if (NULL == p)        return;    .....} 

热点排行