15.c/c++程序员面试宝典-内存分配
来源:互联网 发布:mac装win7鼠标不能动 编辑:程序博客网 时间:2024/06/02 04:53
15.c/c++程序员面试宝典-内存分配
使用c++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响这程序的效率和性能,而且当编程者操作内存的时候一不小心就会出现问题,很多时候,这些问题都是不易发觉的,例如内存泄漏和悬挂指针等。
面试题79 c++中各数据类型的长度***
分析:c++中各数据类型的长度,如表:
【答案】c++中不同的数据类型有不同的长度,长度越大,占用的内存空间也越多。
面试题80 如何分配和释放存储空间***
分析:new是c++的一个关键字。它的使用操作结果是在申请到一段指定数据类型大小的内存。使用方式为:指针变量 = new 数据类型。new使用后处理的3个事情,如下所示:
(1)计算指定数据类型所需要的内存空间大小。
(2)正确的指针类型。
(3)分配内存,将按照语法规则,初始化所分配的内存。
示例代码如下:
int *p;
p=new int;
p直接指向一段由new分配而来的新内存空间。最终p中仍然是存储了一个变量的地址,只是,这是一个“无名”变量。指向原有的某个变量,和指向一段新分配的内存空间,有什么区别呢?
“原有的变量”,可以比喻成指向一间原有的,并且有主的房间。而“新分配的内存空间”,则像是一个“临时建筑物”。编程者必须在不用它的时候,主动将它拆迁,拆迁的工作由delete来完成。当指针变量通过new,而得到一个内存地址后,通过该指针,通过=号,而对该内存地址(一个无名的变量),进行操作,代码如下:
int *p=new int;
*p=100;
cout<<*p<<endl;
屏幕将输出100.
delete将释放指定指针所指向的内存空间。使用方式为delete指针变量。示例代码如下:
int *p;
p=new int;
*p=100;
cout<<*p<<endl;
delete p; //释放内存空间
system("PAUSE");
注意:当一个指针接受delete操作后,它就又成了一个“指向不明”的指针。尽管编程者可以猜测它还是指向原来的地址,然而,事实上,那个变量已经被delete“拆迁”掉了。
new/delete用于分配和释放单个变量的空间,而new[]/delete[]则用于分配连续多个变量的空间。
【答案】在c++中,使用new和delete来分配和释放存储空间。
- 15.c/c++程序员面试宝典-内存分配
- JAVA程序员面试宝典C
- JAVA程序员面试宝典C收藏
- C/C++程序员面试宝典-1
- C/C++程序员面试宝典-2
- 3.c/c++程序员面试宝典-变量
- 4.c/c++程序员面试宝典-引用
- 9.c/c++程序员面试宝典-递归
- 22.c/c++程序员面试宝典-类
- 24.c/c++程序员面试宝典-多态
- 25.c/c++程序员面试宝典-继承
- 34.c/c++程序员面试宝典-模板
- 35.c/c++程序员面试宝典-容器
- 36.c/c++程序员面试宝典-表
- C/C++程序员面试宝典备忘录
- 《程序员面试笔试宝典》C知识归纳
- c++/c面试宝典
- C/C++编程时的内存分类——摘自《程序员面试宝典》
- 值类型和引用类型的区别
- 使用Tiny作为工具进行图片压缩
- 硅谷之谜——互动出版网
- 第十一周项目1-中序线索化二叉树的算法验证
- 第十二周项目一 图基本算法库
- 15.c/c++程序员面试宝典-内存分配
- 点击listview时对其中的图片进行改变
- 第十一周项目1-验证算法(2)二叉树构造算法的验证
- elasticsearch的Search Type类型分析
- makefile练习1
- JavaScript动态增加删除UL节点LI及相关内容
- 数据引擎-阿里的ODPS大规模计算引擎
- 二叉树的链式存储及基本运算
- 第十周项目3 利用二叉树遍历思想解决问题(3)