首页 > 代码库 > 第一周 从C走进C++ 006 动态内存分配
第一周 从C走进C++ 006 动态内存分配
1. 用new 运算符实现动态内存分配
- 第一种用法,分配一个变量:
P = new T;
T是任意类型名,P是类型为T * 的指针。
动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:
int * pn;pn = new int; * pn = 5;
- 第二种用法,分配一个数组:
P = new T[N];
T :任意类型名
P :类型为T * 的指针
N :要分配的数组元素的个数,可以是整型表达式
动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。
- 动态分配数组示例:
int * pn;int i = 5;pn = new int[i * 20];pn[0] = 20;pn[100] = 30; //编译没问题。运行时导致数组越界
- 用“new”动态分配的内存空间,一定要用“delete”运算符进行释放
delete 指针;//该指针必须指向new出来的空间
int * p = new int;* p = 5;delete p;delete p; //导致异常,一片空间不能被delete多次
- 用“delete”释放动态分配的数组,要加“[]”
delete [ ] 指针;//该指针必须指向new出来的数组
int * p = new int[20];p[0] = 1;delete [ ] p;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。