codeblocks的问题

wenhong609 2012-07-19 04:43:30
我用的codeblocks的版本是10.05,出现了一个问题,new出来的内存多次释放过后,居然不会报错,而我在VS2005中会报错。是不是codeblocks的bug?是不是该换编译器了!!!
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还是玩Linux下GCC好~~
wenhong609 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

codeblocks只是一个空的IDE壳子,可以继承多种编译器,不同编译器有差异。这跟codeblocks没
半毛关系。
[/Quote]
选的编译环境是GUN GCC compiler!!
康斯坦汀 2012-07-20
  • 打赏
  • 举报
回复
codeblocks只是一个空的IDE壳子,可以继承多种编译器,不同编译器有差异。这跟codeblocks没
半毛关系。
aquanull 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

那很正常,delete为空的东西,没有副作用。

C/C++ code
int main(void)
{
char* arr = new char[32];
delete []arr;
delete []arr;
}

但是在VS平台上会报错的,实际上应该也是,多次释放是应该错的啊!!
[/Quote]
语言标准是允许“未定义行为”得到正确结果的。
Linux-Torvalds 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

那很正常,delete为空的东西,没有副作用。

C/C++ code
int main(void)
{
char* arr = new char[32];
delete []arr;
delete []arr;
}

但是在VS平台上会报错的,实际上应该也是,多次释放是应该错的啊!!
[/Quote]确实是,我在mingw32编译器上面测试正常。但是在Visual Studio当中是有错误的。
不知道是不是一个bug,因为在The C++ Programming Language当中有一句话是这么说的。

The delete operator may be applied only to a pointer returned by n e w or to zero. Applying delete to zero has no effect.
wenhong609 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

那很正常,delete为空的东西,没有副作用。

C/C++ code
int main(void)
{
char* arr = new char[32];
delete []arr;
delete []arr;
}
[/Quote]
但是在VS平台上会报错的,实际上应该也是,多次释放是应该错的啊!!
Linux-Torvalds 2012-07-19
  • 打赏
  • 举报
回复
那很正常,delete为空的东西,没有副作用。

int main(void)
{
char* arr = new char[32];
delete []arr;
delete []arr;
}
彭家老三 2012-07-19
  • 打赏
  • 举报
回复
这个应该不是bug吧?
图灵狗 2012-07-19
  • 打赏
  • 举报
回复
直接在LINUX下玩纯正的GCC比较好。

64,676

社区成员

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

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