问一个new和delete的问题,请进来看看~!

Hankel 2005-05-18 10:38:08
Search_space类:构造函数:
Search_space(congst char*s, char sep)
{
assert(s != NULL);
int len = strlen(s);
buf = new char[len+1];//new 出来一个buf
if ( buf == NULL )
{
return;
}

memset(buf, 0, len+1);
strncpy(buf, s, len);
separetor = sep;
}
析构函数:~Search_space{
delete buf;
buf = NULL;
}

使用这个类:Search_space *st = new Search_space(string, ' ');//string为源字符串,查找空格

用完后:delete st; st = NULL;

在BCB中使用CodeGuard错误提示在析构函数中delete buf 这里。

*.cgl中的记录:Error 00094. 0x310010 (Thread 0x0964):
Bad parameter: A bad object array (0xA77138) has been passed to the function.
delete[](0x00A77138)

这个问题是什么原因?怎么解决?谢谢,由于是新手,所以可用分数比较少,各位别介意。
...全文
182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hankel 2005-05-18
  • 打赏
  • 举报
回复
那应该怎么检查其他代码的错误呢?
Hankel 2005-05-18
  • 打赏
  • 举报
回复
改成delete[]buf还是一样的错误.
铖邑 2005-05-18
  • 打赏
  • 举报
回复
buf是基本数据类型的数组,即使用“delete buf;”也不会有问题的,问题应该在其它的代码上,或者是CodeGuard误报,这种情况也是经常发生的,特别是在使用STL时,经常会误报错误,极其讨厌
pp616 2005-05-18
  • 打赏
  • 举报
回复
delete []buf
huabihan 2005-05-18
  • 打赏
  • 举报
回复
buf是数组.delete []buf
FengSC 2005-05-18
  • 打赏
  • 举报
回复
基本数据类型数组可以直接使用delete,你看一下是否在类以外直接访问了buf。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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