码迷,mamicode.com
首页 > 其他好文 > 详细

动态内存分配

时间:2017-12-10 13:05:03      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:成功   sed   程序   include   div   用户   img   变量   ext   

Why?

可以保证程序在运行过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也称为堆对象申请和释放的过程一般称为建立和删除

new的功能:动态分配内存,或称为动态创建堆对象

new  数据类型(初始化参数列表)

    • 如果内存申请成功,new运算返回一个指向新分配内存首地址的类型的指针,可通过这个指针对堆对象访问;
    • 如果失败,会抛出异常。
  • 建立的对象是基本类型变量
技术分享图片
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int *p1 = new int;  //分配内存后不设定初值
 6     int *p2 = new int();//表示用0对该对象初始化
 7 
 8     //动态分配用于存放int类型数据的内存空间,并将初值2存入内存空间,然后将首地址赋给指针p3
 9     int *p3 = new int(4);
10 
11     cout << *p1 << endl;
12     cout << *p2 << endl;
13     cout << *p3 << endl;
14     return 0;
15 }
View Code
  • 建立的对象是某一个类的实例对象

如果用户定义了默认构造函数:new Tnew T( )效果相同

如果没有:new T会调用系统生成的隐含的默认构造函数;New T( )除了执行默认构造函数会执行的操作之外,还会为基本数据类型和指针类型的成员用0赋值,而且这一过程是递归的。

delete:删除由new建立的对象,释放指针所指向的内存空间

  detele  指针名;

  如果同一内存空间多次使用delete进行删除,会导致运行错误。

使用new分配的内存,必须用delete释放,否则会导致动态分配的内存单元无法回收,使得程序占据的内存越来越大,这叫做内存泄漏

 

 

动态内存分配

标签:成功   sed   程序   include   div   用户   img   变量   ext   

原文地址:http://www.cnblogs.com/meganhyy/p/8016365.html

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