delete[] p出错

wwqna 2006-05-19 02:02:35
#include <iostream>
using namespace std;

void split(char Names[], int);
int main()
{
char * names = "what is your name";
int len = strlen(names);
split(names, len);
return 0;
}

void split(char Names[], int lens)
{
int old = 0;
int i = 0;
for (i = 0; i < lens; i++)
{
if (Names[i] == '\0')
{
return;
}
else if (Names[i] == ' ')
{
char * subchars = new char[i - old];
memcpy(subchars, Names + old, i - old + 1);
subchars[i - old] = '\0';
cout << subchars <<endl;
//下面该句出错,不用memcpy操作,下面该句又正确
delete[] subchars;
old = i + 1;
}
}

char * subchars2 = new char[i - old + 1];
memcpy(subchars2, Names + old, i - old);
subchars2[i - old] = '\0';
cout << subchars2 <<endl;
delete[] subchars2;
}


请那位解释一下
...全文
394 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwqna 2006-05-19
  • 打赏
  • 举报
回复
*_*, 谢谢两位了!
逸学堂 2006-05-19
  • 打赏
  • 举报
回复
char * subchars = new char[i - old+1];
navi_dx 2006-05-19
  • 打赏
  • 举报
回复
老大,你内存越界了
subchars有i-old个元素,你拷了i-old+1个元素

64,685

社区成员

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

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