C/C++下面这个C程序存在什么问题(比较菜鸟)??

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:47:45
using namespace std;

void GetMemory(char *str)
{
str = (char*) malloc(sizeof(char)* 100);
}
int main()
{
char *haha=NULL;
GetMemory(haha);
strcpy(haha,"hello world");
printf(haha);
return 0;
}

编译没有错,但是执行的时候就直接弹出出错,我估计是内存泄露,但是我说不上来,或者说说不清楚。请高手给我解答!!
我是想问的问题我出的情况是什么,应该怎么表述;当然,帮我解决故障的师兄还是谢谢你了!

楼主的程序的问题是:
因为GetMemory并不能传递动态内存,
main函数中的haha一直都是 NULL。
strcpy(haha, "hello world");将使程序崩溃。
一楼的回答看似道貌岸然,其实也错误:内存泄露。
楼主打算要用指针参数去申请内存,那么应该改用“指向指针的指针”。
using namespace std;

void GetMemory(char **str, int num)
{
*str = (char *)malloc(sizeof(char) * num);
}
int main()
{
char *haha=NULL;
GetMemory(&haha, 100); // 注意参数是 &haha,而不是haha
strcpy(haha,"hello world");
cout<< haha << endl;
free(haha);//记得释放内存
return 0;
}
关于这个问题,请参看书林锐的<<高质量C++编程指南>>

using namespace std;

char *GetMemory()
{
str = (char*) malloc(sizeof(char)* 100);
return str;
}
int main()
{
char *haha=NULL;
haha=GetMemory();
strcpy(haha,"hello world");
printf(haha);
return 0;
}
你之前的程序在
void GetMemory(char *str)
{
str = (char*) malloc(sizeof(char)* 100);