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

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

2012-04-14 
动态数组释放内存出错,求指教C/C++ code#include iostream#include string#include vectorusing nam

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

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

热点排行