回 帖 发 新 帖 刷新版面

主题:关于c++的动态数组内存释放问题

请问一下各位高手,题目要求把vector里面的东西复制到具有相同对象数目的动态数组中,程序结果是出来了,可是结果出来后提示有错,我把delete【】p 删除后就没有问题,如果不删除就有问题,到底是为什么呢? 以下是程序代码,平台是vs2010,谢谢!
#include <iostream>
#include <vector>
#include <string>
using std::cout;
using std::cin;
using std::string;
using std::vector;
using std::endl;
int main()
{
    vector<int> ivec1;
    int a;

    while (cin>>a)
        ivec1.push_back(a);
    int *p=new int[ivec1.size()];
    for (vector<int>::iterator iter=ivec1.begin();iter!=ivec1.end();++iter)
    {
        *p=*iter;
        cout<<*p<<" ";
        ++p;
    }

    delete [] p;
    system("Pause");
    return 0;

}

回复列表 (共2个回复)

沙发

int *p=new int[ivec1.size()];
你看看此时p的值是多少
for
{
…………
}
你再看看此时p的值是多少
delete[] p;

板凳

非常谢谢你的答案。
哦~ 我看好像是当iter去到最后需要判定iter是否=ivec.end()的时候,p已超出范围了吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册