【发布时间】:2012-07-06 14:18:41
【问题描述】:
当指针关联时,我在解除分配时收到双重释放错误。我怀疑一些未定义的行为正在进行中,但我不知道从哪里开始寻找它,或者如何寻找它。您如何追踪未定义的行为?
编译器是intel 12。我无法发布代码,因为它很大,我什至不确定问题的根源在于我的代码。它可能在同事的图书馆里。我试图用 gdb 做一些调试,但我没有走得太远。这是错误。
malloc: * 对象 0x102302f20 的错误:未分配被释放的指针 * 在 malloc_error_break 中设置断点进行调试
紧接其前的那一行是 print *, associated(pointer),它打印 true。
这是回溯
#0 0x00007fff9327b6c0 in malloc_error_break ()
#1 0x00007fff9327b805 in free ()
#2 0x0000000100d27470 in for_dealloc_allocatable ()
#3 0x0000000100506699 in sharedarraysmodule_mp_deleterealsharedarray2_ () at SharedArrays.f90:609
#4 0x00000001003bbc4e in gammaaggregatormodule_mp_deleteprivate_ () at GammaAggregator.f90:86
#5 0x0000000102300bc0 in ?? ()
Previous frame inner to this frame (gdb could not unwind past this frame)
【问题讨论】:
-
有困难!和一个调试器(也许)。向我们展示任何代码和错误消息,您使用的是什么编译器,通常的东西?
-
是的,我正在这样做。我发了两次,所以我在队列中得到了双重打击
-
你试过
valgrind ./a.out吗? -
@Zhenya:我不指望它会产生任何有意义的东西,除了由于代码编写方式可怕而导致的巨大回溯。任何信号都会被淹没。我已经去过那里
标签: fortran