某C++面试题

2020-12-13 02:57

阅读:245

标签:返回   c++   strcpy   char   内存   面试   mem   动态内存   不能   

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++面试题

标签:返回   c++   strcpy   char   内存   面试   mem   动态内存   不能   

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


评论


亲,登录后才可以留言!