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 面试题
介绍java中初始化块的使用
Sep 11 面试题
我能否用void** 指针作为参数, 使函数按引用接受一般指针
Feb 16 面试题
Kingsoft金山公司C/C++笔试题
May 10 面试题
如何高效率的查找一个月以内的数据
Apr 15 面试题
阿里巴巴Oracle DBA笔试题答案-备份恢复类
Nov 20 面试题
写出SQL四条最基本的数据操作语句(DML)
Dec 12 面试题
面向对象设计的原则是什么
Feb 13 面试题
中软国际Java程序员机试题
Aug 19 面试题
西安夏日科技有限公司Java笔试题
Jan 11 面试题
Ejb技术面试题
Apr 29 面试题
信号量和自旋锁的区别?如何选择使用?
Sep 08 面试题
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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
我的求职择业计划书
2014/04/04 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
商务信函英语问候语
2015/11/10 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python