值初始化-new

程序如下
#include<iostream>
using namespace std;

int main()
{
        int *a=new int(1);
        int *b=new int(2);
        int *c=new int(3);
        cout<<a<<' '<<*a<<endl;
        cout<<b<<' '<<*b<<endl;
        cout<<c<<' '<<*c<<endl;
        return 0;
}

运行结果如下:

0x21390 1
0x213a0 2
0x213b0 3

int *p = new int(5); 
这句是从堆上分配一个int型变量所占的字节内存,这个内存单元存放的整数值为5,然后让一个整形的指针变量p指向它的地址。
释放方式:delete p;
int *p = new int[5]; 
这句相当于从堆上分配一个含有5个元素的整形数组所占的字节内存,然后让一个整形的指针变量p指向它的首址。
释放方式:delete []p;(注意这个[]不能掉了,如果掉了就会只释放P[0]所占的空间,p[1]到p[4]不会被释放,产生内存泄露。)

原文地址:https://www.cnblogs.com/orchid-sky/p/3606997.html