| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3833 人关注过本帖, 1 人收藏
标题:关于new分配内存使用后delete的问题
只看楼主 加入收藏
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
结帖率:100%
收藏(1)
已结贴  问题点数:50 回复次数:2 
关于new分配内存使用后delete的问题
程序代码:
#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 ?如果不释放,会不会造成内存泄露?
2016-05-26 20:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:50 
delete[] p2; 你释放什么,释放int LEN[BUFF1]吗?
要好好复习一下 placement new 呀:)
2016-05-27 08:55
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:0 
昨晚搜了一个晚上,问了一个晚上。才发现这伪代码真的很有问题啊。(捂脸。)new的三种用法昨晚也看到了。。谢谢。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2016-05-27 11:04
快速回复:关于new分配内存使用后delete的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073366 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved