标签:返回 c++ strcpy char 内存 面试 mem 动态内存 不能
void GetMemory(char p)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++ strcpy char 内存 面试 mem 动态内存 不能
原文地址:https://blog.51cto.com/14410946/2411576