c++动态数组问题
#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;}#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报错