首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++动态数组有关问题

2012-09-24 
c++动态数组问题C/C++ code#includeiostream#includevectorusing namespace stdint main(){vectorin

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报错

热点排行