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


Posted in 面试题 onDecember 04, 2015
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)语句不起作用。

Tags in this post...

面试题 相关文章推荐
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
Aug 09 面试题
如何提高SQL Server的安全性
Jul 25 面试题
What is view? why do we have view?
Jun 22 面试题
.NET面试题:什么是反射
Sep 30 面试题
华三通信H3C面试题
May 15 面试题
Linux的主要特性
Oct 06 面试题
Linux管理员面试经常问道的相关命令
Dec 12 面试题
介绍一下linux的文件权限
Jul 20 面试题
介绍一下如何优化MySql
Dec 20 面试题
火山动力Java笔试题
Jun 26 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
May 30 面试题
J2EE是技术还是平台还是框架
Aug 14 面试题
C语言基础笔试题
Apr 27 #面试题
南京迈特望C/C++面试题
Jul 09 #面试题
C语言怎样定义和声明全局变量和函数最好
Nov 26 #面试题
C,C++的几个面试题小集
Jul 13 #面试题
Java工程师面试集锦之Spring框架
Jun 16 #面试题
2019年Java 最常见的 面试题
Oct 19 #面试题
2019年Java面试必问之经典试题
Sep 12 #面试题
You might like
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
跟老齐学Python之print详解
2014/09/28 Python
python修改注册表终止360进程实例
2014/10/13 Python
在Python中定义和使用抽象类的方法
2016/06/30 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python Socket编程详细介绍
2017/03/23 Python
Python 对象中的数据类型
2017/05/13 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
python实现图片彩色转化为素描
2019/01/15 Python
浅析使用Python搭建http服务器
2019/10/27 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
经济管理专业毕业生推荐信
2013/11/11 职场文书
酒店led欢迎词
2014/01/09 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技