首页 > 编程语言 > 详细

某C++面试题

时间:2019-06-21 01:12:44      阅读:158      评论:0      收藏:0      [点我收藏+]
void GetMemory(char p)
{
p=(char
)malloc(100);
}

void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,"helloworld");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的str一直都是NULL。strcpy(str,"helloworld");将使程序崩溃。

char GetMemory(void)
{
char p[]="helloworld";
return p;
}
void Test(void)
{
char
str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原先的内容已经被清除,新内容不可知。

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函数会有什么样的结果?
答:(1)能够输出hello(2)内存泄漏

某C++面试题

原文:https://blog.51cto.com/14410946/2411576

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!