int *p = new int(5);   和 int *p = new int[5];  有区别吗,怎么释放我好象就是那种不学C++直接VC的鸟~

解决方案 »

  1.   

    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]不会被释放,产生内存泄露。)