注册 登录
编程论坛 C++教室

关于new分配内存使用后delete的问题

lanke711 发布于 2016-05-26 20:07, 4017 次点击
程序代码:
#include <iostream>
#include <new>

using namespace std;
const int BUFF1=1024;
const int BUFF2=5;
int LEN[BUFF1];
int main()
{
    int i,j;
    int* p1,*p2;

    p1=new int[BUFF2];
    p2=new(LEN) int;
   
    for(i=0;i<BUFF2;i++)
    {
        p2[i]=p1[i]=1000+20*i;
        
        cout<<"值p1="<<p1[i]<<"\t";
        cout<<"地址p1="<<&p1[i]<<"\t";
        cout<<"值p2="<<p2[i]<<"\t";
        cout<<"地址p2="<<&p2[i]<<endl;
    }

    delete[] p1;
    delete[] p2;//释放p2就报错了!
    return 0;
}

p1是常规new分配内存。p2是指定一个int类型的内存地址,大小为1024的分配方式.
当释放p2的内存时,就报错了,请问为何不能delete 这个p2 ?如果不释放,会不会造成内存泄露?
2 回复
#2
rjsp2016-05-27 08:55
delete[] p2; 你释放什么,释放int LEN[BUFF1]吗?
要好好复习一下 placement new 呀:)
#3
lanke7112016-05-27 11:04
昨晚搜了一个晚上,问了一个晚上。才发现这伪代码真的很有问题啊。(捂脸。)new的三种用法昨晚也看到了。。谢谢。
1