0

我有一个库“libqscr.so”,我在运行时使用 dlopen 将其加载到我的程序中。它工作得很好,在我重新启动我的电脑后,dlopen 开始给我这个错误:

*** Error in `/path/to/program': realloc(): invalid pointer: 0xbfffef5c ***

我试过重新编译库,但问题仍然存在。我注意到它仅在路径正确时发生,否则返回 null。顺便说一句,我在 Ubuntu 14.04 上运行所有这些。

编辑:我注意到这个问题只发生在那个特定的库中,其他的加载正常。

EDIT2:所以我已经跟踪到库的问题,甚至是导致它的函数。我注意到,如果我删除了 setLength 函数,一切都会开始正常工作:

alias Tqarray = Tqvar[];
Tqarray[string] vals;
struct Tqvar{
    string s;
    double d;
    bool ii = true;
}

Tqvar setLength(Tqlist args){
    Tqvar r = args.read(0);
    vals[r.s].length=to!uint(trunc(args.read(1).d));
    return r;
}

任何想法为什么会发生这种情况?

另一个编辑(3):我删除了 trunc 函数调用,现在一切正常。任何解释为什么会发生的答案,我都会接受。

4

0 回答 0