C++面试题

当前位置: 面试问题网 > C++面试题 > C/C++有关内存的思考题

C/C++有关内存的思考题

void GetMemory(char *p)
   {
   p = (char *)malloc(100);
   }
   void Test(void)
   {
   char *str = NULL;
   GetMemory(str);
   strcpy(str, “hello world”);
   printf(str);
   }
   请问运行Test 函数会有什么样的结果?
   答:程序崩溃。
   因为GetMemory 并不能传递动态内存,Test 函数中的 str 一直都是 NULL。
   strcpy(str, “hello world”);将使程序崩溃。
   char *GetMemory(void)
   {
   char p[] = “hello world”;
   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)内存泄漏
   void Test(void)
   {
   char *str = (char *) malloc(100);
   strcpy(str, “hello”);
   free(str);
   if(str != NULL)
   {
   strcpy(str, “world”);
   printf(str);
   }
   }
   请问运行Test 函数会有什么样的结果?
   答:篡改动态内存区的内容,后果难以预料,非常危险。
   因为free(str);之后,str 成为野指针,if(str != NULL)语句不起作用。

【C/C++有关内存的思考题】相关文章

1. C/C++有关内存的思考题

2. 大学生对职业生涯规划的思考

3. 对法律人职业道德的思考

4. 什么是虚拟内存?虚拟内存有什么优势?

5. 职场生存的八大原则

6. 求职面试五大必考题

7. 当心这样的面试考题

8. 这样的招聘考题需要当心

9. 身体语言泄露你的思想

10. 跳槽前的思量

本文来源:https://www.mianshiwenti.com/a13225.html

点击展开全部

《C/C++有关内存的思考题》

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝C/C++有关内存的思考题﹞相关内容

「C/C++有关内存的思考题」相关专题

其它栏目

也许您还喜欢