background image

new 

 “ ”

,从字面上看意思为 新 ;而 delete 

字面意思为 删除 。二者在 C++

”  

中内存管理中大致的功能,应是一个为 新建 ,一个为 删除 。

20.2.1 new 

 

  new   

是 c++ 

 

的一个关键字。被当作像 +、-、* 、/ 一样的操作符。它的操作结

 

果是在申请到一段指定数据类型大小的内存。

 

 

  语法:

 

 

  指针变量 = new 数据类型; 

 

  new 

 

将做三件事:

1

 

、主动计算指定数据类型需要的内存空间大小;

2

 

、返回正确的指针类型;

3

 

、在分配内存的一,将按照语法规则,初始化所分配的内存。

 

 

  这是什么意思呢?看看例子吧:

 

  int* p; 

p = new int; 

 

  和以往不一样,p 

这回不再 寄人篱下 ,并不是指向某个已存在的变量,

而是直接指向一段由 new 

 

分配而来的新内存空间。

“p 指向一段由 new 

” 

 

分配而来的新内存空间 这句话等同于:

“new 分配一段新的内存空间,然后将该内存空间的地址存入到变量 p

” 

中。

所以,最终 p

中仍然是存储了一个变量的地址,只是,这是一个 无名 变量。 

 

指向原有的某个变量,和指向一段新分配的内存空间,有什么区别呢?

原有的变量 ,可以比喻成指向一间原有的,并且有主的房间。而 新分配的

内存空间 ,则像是一个 临时建筑物 。我们必须在不用它的时候,主动将它
拆迁。拆迁的工作由 delete

 

来完成。

 

当指针变量通过 new ,而得到一个内存地址后,我们就可以像以前的所说的,
通过该指针,通过*

 

号,而对该内存地址(一个无名的变量),进行操作。

 

如:

Page 

2

 of 

8