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