有关内存的思考题

碧咸 2009-05-15 04:20:51
有关内存的思考题

1 void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);

strcpy(str, "hello world");
printf(str);
}

请问运行Test函数会有什么样的结果?
答:

2 char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}

请问运行Test函数会有什么样的结果?
答:

3 Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");

printf(str);

}

请问运行Test函数会有什么样的结果?

答:



4 void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}

请问运行Test函数会有什么样的结果?
答:
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
永远的明日 2009-05-15
  • 打赏
  • 举报
回复
这不是高质量C++里面的题目吗?
papaofdoudou 2009-05-15
  • 打赏
  • 举报
回复
顶楼上!
liliangbao 2009-05-15
  • 打赏
  • 举报
回复
1.非法访问内存,因为str仍然为NULL

2.随机串,因为局部变量内存释放了

3.hello,正常,但是有内存泄漏~

4.因编译器而异吧,因为使用了free后没有将指针置空,再使用就是使用野指针~
liuka 2009-05-15
  • 打赏
  • 举报
回复
1:出错//申请内存的是P的copy _P,P更本没有申请内存
2:打印随即的//栈被自动释放了
3: hello//指针的指针
4:乱码//char *str已经被释放了

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧