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...

面试题 相关文章推荐
几道PHP面试题
Apr 14 面试题
六道php面试题附答案
Jun 05 面试题
什么是serialVersionUID
Mar 04 面试题
serialVersionUID具有什么样的特征
Feb 20 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述
Mar 30 面试题
视图的作用
Dec 19 面试题
什么是托管函数?托管函数有什么用?
Jun 15 面试题
Linux不知道文件后缀名怎么判断文件类型
Apr 26 面试题
软件测试常见笔试题
Feb 04 面试题
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
Mar 12 面试题
解释下面关于J2EE的名词
Nov 15 面试题
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
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
python mysqldb连接数据库
2009/03/16 Python
python实现代理服务功能实例
2013/11/15 Python
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python3中str(字符串)的使用教程
2017/03/23 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
python编程使用协程并发的优缺点
2018/09/20 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
Python批量启动多线程代码实例
2020/02/18 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
购房意向书范本
2014/04/01 职场文书
合作协议书范本
2014/04/17 职场文书
幼儿生日活动方案
2014/08/27 职场文书
拆迁委托协议书
2014/09/15 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书