关闭

C++ 学习 new

140人阅读 评论(0) 收藏 举报
分类:

new 还有一种形式是布局new ,

 int buffer2 = new int [10];
 int * p4=new (buffer2) int [20];`

则 以p4为首地址的数组,会使buffer2的为首地址的内存块
placement new操作符使用的是静态内存,而不是动态分配的内存。这就意味着,不能用delete操作符来对它进行内存释放

当两个new出来的内存是根据同一个类型的首地址分配的,那么他们指向的是同一块存储单元。不会出现一个被挤走的情况

#include <iostream>
#include <new>

using namespace std;

int main()
{
    int * a = new int[10];
    int * b = new (a) int [20];
    int * c = new (a) int [20];

    b[0] = 1;
    cout<<b[0]<<endl;
    c[0] = 22;
    cout<<b[0]<<endl;
}

结果是 1 22;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:100925次
    • 积分:5184
    • 等级:
    • 排名:第5489名
    • 原创:437篇
    • 转载:20篇
    • 译文:1篇
    • 评论:0条