• 6635阅读
  • 3回复

【讨论】这个题的结果是什么? [复制链接]

上一主题 下一主题
离线yishaofeng
 

只看楼主 倒序阅读 楼主  发表于: 2005-11-29
【讨论】这个题的结果是什么?
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
[ 此贴被fanyu在2005-11-29 12:53重新编辑 ]
离线fanyu
只看该作者 1楼 发表于: 2005-11-29
运行出错。
离线style
只看该作者 2楼 发表于: 2006-05-11
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}

这里在调用函数GetMemory时只是给局部半量p分配了存储空间,而不是给str分配空间.所以运行会出错.

如果要改,代码如下:

void GetMeMory(char **p)
{
*p = (char *)malloc(100);
}

void Test()
{
char *str = NULL;
GetMeMory(&str);
strcpy(str, "hello world");
printf(str);
}
离线sky_hao

只看该作者 3楼 发表于: 2006-05-12
这个关于内存分配的帖子讲到过这一点的,自己再去看看吧。好像就是原讲解的例子耶。
快速回复
限100 字节
 
上一个 下一个