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

谈new

时间:2018-05-13 10:42:51      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:初始化   char   需要   结束   [1]   bsp   nbsp   pointer   数组   

1. New在c++里是用来在堆里申请一段内存。程序结束之前需要用delete手动释放内存。并且不受作用域的控制。

格式:

typename * pointer_name = new typename;

……

delete  pointer_name;

如果为数组申请内存,因为数组是存储在连续的一段内存里,所以,

格式:

typename * pointer_name = new typename [num_elements];

……

delete  [] pointer_name;

在申请内存的同时,还可以进行初始化,例如:

int *p =new int (4); //*p=4 内置类型

后面两种初始化只适合C++11。

int *p =new int [4] {1,2,3,4};//p[0]=1;p[1]=2;p[2]=3;p[3]=4 数组

where *p =new where {2,5,6};//struct where{int x;int,y;int z};where 为结构体。

2. 定位new运算符,它允许在指定的位置申请内存,不需要用delete。

#include<new>//需要包含该头文件

typename * pointer_name = new (placement) typename;或

typename * pointer_name = new (placement) typename [num_elements];

例如:

#include<new>

char buffer[200];

int *p1= new (buffer) int;//p1指向buffer起始的一个int大小的内存

int *p2 =new (buffer) int [4];//p2指向buffer起始的4个int大小的内存,

int *p3 =new (buffer+4*sizeof(int)) int [4];//p3指向buffer起始开始算起偏移4*sizeof(int)个字节的4个int大小的内存。

谈new

标签:初始化   char   需要   结束   [1]   bsp   nbsp   pointer   数组   

原文地址:https://www.cnblogs.com/LiuFarrell/p/9031072.html

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