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

面试题 相关文章推荐
如何减少垃圾回收让内存更加有效使用
Oct 18 面试题
指针和引用有什么区别
Jan 13 面试题
编写函数,将一个3*3矩阵转置
Oct 09 面试题
索引覆盖(Index Covering)查询含义
Feb 18 面试题
什么是聚集索引和非聚集索引
Jan 17 面试题
武汉高蓝德国际.net机试
Jun 24 面试题
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
Dec 03 面试题
nohup的用法
Aug 10 面试题
Why do we need Unit test
Jan 03 面试题
介绍一下MYSQL常用的优化技巧
Oct 25 面试题
如何清空Session
Feb 23 面试题
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
php4的session功能评述(二)
2006/10/09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
防止文件缓存的js代码
2013/01/10 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python数据类型详解(二)列表
2016/05/08 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
python相对企业语言优势在哪
2020/06/12 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
Python读写Excel表格的方法
2021/03/02 Python
中医专业应届生求职信
2013/11/17 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
一位农村小子的自荐信
2014/04/07 职场文书