标题:关于delete释放空间报错的问题
只看楼主
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
结帖率:77.78%
已结贴  问题点数:10 回复次数:6 
关于delete释放空间报错的问题
#include <iostream>
#include <vector>

using namespace std;

int main ()
{
    vector<int> number;
    int n;
    while (cin>>n)
    {
        number.push_back(n);
    }
    int *temp=0;
    temp=new int(number.size(),'0');
    size_t i=0;
    for (vector<int>::iterator j=number.begin(); j!=number.end(); j++)
    {
        temp[i]=*j;
        i++;
    }
    for (i=0; i<number.size(); i++)
    {
        cout<<temp[i]<<"\t";
    }
    cout<<endl;
    delete []temp;
    temp=0;
    return 0;
}


这是我写的一段小程序。delete释放空间在运行的时候总是报错。。语法也没有错误,我百度以后也没找到错误的原因。。求各位大神给个答复,谢谢了        
搜索更多相关主题的帖子: vector namespace include number return 
2013-04-09 20:08
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
得分:0 
temp=new int[number.size()]
如果我把开辟动态数组改成这样的,就不会出问题。。这是为什么呢。。
开辟动态数组不可以按照我写的程序那样来吗
2013-04-09 20:10
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
temp=new int(number.size(),'0');
你到底是要int还是int[]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-09 20:20
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:10 
temp=new int(number.size(),'0');

这是要干嘛 int类型哪有这么强大的初始化式 你说语法没有错误 你是不是该考虑换个编译器了
还是老老实实的 这样吧 然后在一个一个初始化 用数组 没办法
temp = new int[number.size()];

要么就用容器 好好的换数组干嘛 迭代器不也能下标操作吗
vector<int>::iterator p = number.begin();

*p; *(p+i); p[i]; 都可以啊
或者 你是在最求什么卓越的性能

人生是一场错过 愿你别蹉跎
2013-04-09 20:30
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
得分:0 
回复 4楼 fanpengpeng
呃。。。我只是想要进行初始化。。。
new int(number.size(),'0');
就是开辟一个数组,将其中所有的值初始化为0.
2013-04-09 21:20
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
你的这个是容器的初始化式 他是复合类型 可以支持比较复杂的初始化式
int是内置类型 没有高级的初始化式 至多 int(i)这样的
对于动态分配的数组的初始化 有种说法是可以进行值初始化
temp = new int[number.size()]();

但是 貌似我这边不行 还是一对随机数 据说有的编译器是可以的
只能解释到这里了 我是新手

人生是一场错过 愿你别蹉跎
2013-04-09 21:36
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
得分:0 
回复 6楼 fanpengpeng
THANK YOU啦。。
搞懂了。。。C++好难学啊。。。看书看一看就忘了以前的了。。
2013-04-09 21:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403513-1-1.html




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

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