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来分配和释放存储空间。


0 0
原创粉丝点击