【发布时间】:2015-05-05 04:12:23
【问题描述】:
gcc 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 运行我的代码将核心转储。 valgrind 消息是:
==14892== Invalid free() / delete / delete[] / realloc()
==14892== at 0x4C2B343: operator delete(void*) (vg_replace_malloc.c:502)
==14892== by 0x53404DE: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19)
==14892== by 0x5AE2258: __run_exit_handlers (exit.c:82)
==14892== by 0x5AE22A4: exit (exit.c:104)
==14892== by 0x5AC7ECB: (below main) (libc-start.c:321)
==14892== Address 0x55892e8 is in the BSS segment of /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
当我使用 gcc 版本 4.7.2 20121015 (Red Hat 4.7.2-5) (GCC) 时,它不会进行核心转储。
编辑:
昨天,我发现了我的代码的错误。如:
static array[1024][4];
array[1023][4] = '\0'; // this destroy other object
在我更改此代码后,它运行良好。
【问题讨论】:
-
"这是 gcc 的错误吗?"它更有可能是代码中的错误。
-
您能否提供导致问题的源代码的最小示例?