这样delete为什么会有问题?

Aaron_ia 2005-12-29 01:07:45
char * dev[5];
int cnt = 0;
char temp[MAX_PATH];
for(unsigned int i=0, j=0; i<=strlen(chr); i++,j++)
{
if(chr[i] == ',' || i == strlen(chr))
{
dev[cnt] = new char[strlen(temp)];
strcpy(dev[cnt], temp);
j=-1;
memset(temp, 0, MAX_PATH);
cnt++;
}
else
{
temp[j] = chr[i];
}
}

i=0;
while(dev[i] !=NULL)
{
delete []dev[i]; //这里报错,访问非法块
i++;
}
...全文
134 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatsouta 2005-12-29
  • 打赏
  • 举报
回复
while( i < 5)
{
delete [] arr[i];
}

用!= NULL 是不准确的
heskyII 2005-12-29
  • 打赏
  • 举报
回复
数组越界,建议使用<VECTOR>
csucdl 2005-12-29
  • 打赏
  • 举报
回复
楼主勿恼, 此等问题只需稍微点播便可通也
tomorrow819 2005-12-29
  • 打赏
  • 举报
回复
学习
Aaron_ia 2005-12-29
  • 打赏
  • 举报
回复
哎,惭愧. 用了这么久C++还犯这种低级错误
SuperXu_swjtu 2005-12-29
  • 打赏
  • 举报
回复
越界访问,另外楼主的程序是不是重新组织一下?感觉其中也没有考虑结束符
dragonzxh 2005-12-29
  • 打赏
  • 举报
回复
楼主是要用','分割字符串吧。。。
随便写了一个,楼主看看
自己随便写的方法,没仔细考虑。楼主凑合着看看

char *ArrayStore[MaxSize]={0};

char* Foo(char Array[])
{
static int j =0;
if (Array == NULL)
{
return Array;
}
char* p = Array;
for (int i=0;p!=NULL;p++,i++)
{
char* store = Array;
if (*p==',')
{
store[i]='\0';
ArrayStore[j] = store;
j++;
p++;
return Foo(p);
}
if (*p=='\0')
{
j++;
ArrayStore[j] = store;

return Array;
}
}
return Array;
}
void main()
{
char Array[] = {"AAA,BBB,CCC,DDD"};
Foo(Array);
for (int i =0;i<MaxSize;i++)
{
if (ArrayStore[i]!=0)
{
cout<<ArrayStore[i]<<endl;
}
}
system("pause");
}
dragonzxh 2005-12-29
  • 打赏
  • 举报
回复
似乎错还不少,楼主最好重新考虑一下结构。。
j=-1前还少一句 dev[cnt][j]='\0';
蒋晟 2005-12-29
  • 打赏
  • 举报
回复
i=0;
while(dev[i] !=NULL)
{
delete []dev[i]; //这里报错,访问非法块
i++;
}
会访问越界……
wfwsm 2005-12-29
  • 打赏
  • 举报
回复
i=0;
while(dev[i] !=NULL)
{
delete []dev[i]; //这里报错,访问非法块
i++;
}

假如i>=5
就又可能报错 因为你不知道接下来的内存是什么!或是NULL 或不是,
dragonzxh 2005-12-29
  • 打赏
  • 举报
回复
dev[cnt] = new char[strlen(temp)];//这里是dev[cnt] = new char[strlen(temp)+1];吧
其他没有怎么看,大概是越界了吧。

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧