某C++面试题
2020-12-13 02:57
标签:返回 c++ strcpy char 内存 面试 mem 动态内存 不能 void Test(void) char GetMemory(void) void GetMemory2(char *p, int num) 某C++面试题 标签:返回 c++ strcpy char 内存 面试 mem 动态内存 不能 原文地址:https://blog.51cto.com/14410946/2411576
{
p=(char)malloc(100);
}
{
char *str = NULL;
GetMemory(str);
strcpy(str,"helloworld");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的str一直都是NULL。strcpy(str,"helloworld");将使程序崩溃。
{
char p[]="helloworld";
return p;
}
void Test(void)
{
char str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原先的内容已经被清除,新内容不可知。
{
p = (char)malloc(num);
}
void Test(void)
{
char str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:(1)能够输出hello(2)内存泄漏
上一篇:python3学习案例
下一篇:图形开发语言 工具