读书人

c++动态数组有关问题

发布时间: 2012-09-24 13:49:42 作者: rapoo

c++动态数组问题

C/C++ code
#include<iostream>#include<vector>using namespace std;int main(){    vector<int> ivec;    int ival;    //用标准输入到vector 对象    while(cin>>ival)        ivec.push_back(ival);    //动态创建一个大小与vector一样的数组 将vector对象的元素复制给新数组        int *pia=new int[ivec.size()];        for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++,pia++)            *pia=*iter;    delete [] pia;    return 0;}

我用vc6.0运行总是报错 将delete [] pia去掉 就不报错了 求大神指教


[解决办法]
pia的值被你修改了。你要先备份起初的pia的值,delete初值的pia的值。
[解决办法]
C/C++ code
#include<iostream>#include<vector>using namespace std;int main(){    vector<int> ivec;    int ival;    //用标准输入到vector 对象    while(cin>>ival)        ivec.push_back(ival);    //动态创建一个大小与vector一样的数组 将vector对象的元素复制给新数组        int *pia=new int[ivec.size()];    int *bakP = pia;        for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++,pia++)            *pia=*iter;    delete [] bakP;    return 0;}
[解决办法]
delete [] (pia-ivec.size());
你++pia若干次之后,pia已经不是数组的首地址了。
[解决办法]
delete的指针必须是你用new获得的那个指针
不允许任何更改
pia++更改了pia的值,因此delete报错

读书人网 >C++

热点推荐