码迷,mamicode.com
首页 > 编程语言 > 详细

第一周 从C走进C++ 006 动态内存分配

时间:2014-07-16 18:39:49      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   strong   问题   div   

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;

 

第一周 从C走进C++ 006 动态内存分配,布布扣,bubuko.com

第一周 从C走进C++ 006 动态内存分配

标签:style   blog   color   strong   问题   div   

原文地址:http://www.cnblogs.com/qingsiburan/p/3845101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!