动态数组释放内存出错,求指教
- C/C++ code
#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector<string> v; string a; while(cin>>a) { v.push_back(a); } const char *p[50]; for(int i=0;i!=v.size();++i) { p[i]=new char[v[i].size()+1]; p[i]=v[i].c_str(); cout<<p[i]<<endl; } for(int i=0;i!=v.size();++i) { delete [] p[i]; p[i]=0; } return 0;}
删掉delete那段就没问题。
试过很多方法,总是出错(eg.不用循环,直接delete [] p[v.size()];)
错误:exspression:_BLOCK_TYPE_IS_VALID(pHead->nBlockuse)
求高人指教。
[解决办法]
给P[i]赋值的方式不对
[解决办法]
赋值那有问题,用这个吧,把你那个const char* p[50]的const去掉吧
strcpy(p[i],v[i].c_str());
[解决办法]
p[i]=v[i].c_str();
这里有问题,这样赋值 那么你失去了p[i]所new的内存了用strcpy拷贝过去