C++改错?

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:49:46
char *f1()
{
char *str;
memcpy(str, “hello”, 6);
return str;
}

int *f2()
{
int a=5;
return &a;
}

第一个
没有分配内存,加上if((char *)malloc(sizeof(6))==NULL)
另外注意内存泄露.

char *f1()
{
char *str;
if((char *)malloc(sizeof(6))==NULL)
return 0;
memcpy(str, “hello”, 6);
return str;
}

第二个
返回时,局部变量a已经释放,所以返回a的地址是错的,地址上的内容已经不确定了,改为:
int f2()
{
int a=5;
return a;
}

两个函数,同一个错误;

return str;
return &a;

任何试图返回局部变量的引用或者指针都是错误的,应为在返回前局部变量已经被销毁。

char *f1()
{
char *str = new char[6];
memcpy(str, “hello”, 6);
return str;
}

int *f2()
{
int a=5;
return (int *)(new int(a));
}