您的位置:首页 > 其它

Getmemory函数问题

2016-03-07 17:02 260 查看
有关内存的程序问题
(1)
void GetMemory(char*p)
{
p = (char*)malloc(57);
}
void main()
{
char*str = NULL;
GetMemory(str);
strcpy(str, "bit C++");
printf(str);
}


程序崩溃,由于GetMemory采用值传递,p的值没有使void中的str变化
(2)
char*GetMemory(void)
{
char p[]="bit C++";
return p;//返回p的首地址
}
void main()
{
char*str = NULL;
str = GetMemory;
printf(str);
}


程序乱码
(3)
char GetMemory(char**p)
{
*p=(char*)malloc(57);
}
void main()
{
char*str = NULL;
GetMemory(&str);
strcpy(str, "bit C++");
printf(str);
}


可以输出bit C++,但是内存泄露,应该free(str);

(4)
void main()
{
char *str = (char*)malloc(57);
strcpy(str, "bit");
free(str);
if (str != NULL)
{
strcpy(str, "C++");
printf(str);
}
}


free(str)之后str变成野指针,并没有置空,if语句不起作用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数问题 Getmemory