读书人

动态数组释放内存出错求指教解决思路

发布时间: 2012-04-14 17:14:21 作者: rapoo

动态数组释放内存出错,求指教

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拷贝过去

读书人网 >C++

热点推荐