[C++] NEW Advanced Usage

NEW Advanced Usage

将分配的内存限定在特定的一块区域

#include<iostream>
#include<new>
const int buf(512);
int N(5);
char buffer[buf] = {0};

using namespace std;
void main()
{
    double *p1, *p2;

    std::cout << "


";
    p1 = new double[N];
    p2 = new (buffer)double[N];
    for (int i = 0; i < N; i++)
    {
            p1[i] = p2[i] = i + 10.8;
            std::cout << "p1===   " << &p1[i] << "  " << p1[i];
            std::cout << "   p2===   " << &p2[i] << "  " << p2[i] << std::endl;
    }

    double *p3, *p4;
    std::cout << "


";
    p3 = new double[N];
    p4 = new (buffer)double[N];
    
    for (int i = 0; i < N; i++)
    {
        p3[i] = p4[i] = i + 10.8 ;
        std::cout << "p3===   " << &p3[i] << "  " << p3[i];
        std::cout << "   p4===   " << &p4[i] << "  " << p4[i] << std::endl;
    }

    double *p5, *p6;
    std::cout << "


";
    p5 = new double[N];
    p6 = new (buffer)double[N];

    for (int i = 0; i < N; i++)
    {
        p6[i] = p5[i] = i + 10.8;
        std::cout << "p5===   " << &p5[i] << "  " << p5[i];
        std::cout << "   p6===   " << &p6[i] << "  " << p6[i] << std::endl;
    }
    std::cin.get();
}
p2 p4 p6 的地址保持一样!!!

原文地址:https://www.cnblogs.com/tianhangzhang/p/4979416.html