1

我有一个包含全局变量的共享库

    诠释***车;

这个变量在函数初始化

    __attribute__((constructor)) void init(void) {
        carg = generator->get_carg();
    }

在哪里

    int*** get_carg();

只返回预初始化的 carg 数组。

如果此库正在加载,则存在分段错误

程序收到信号 SIGSEGV,分段错误。/path/to/project/main.cpp:814 处的 init () 中的 0x00007fffebe05fea

在这个框架中

    (gdb) 打印卡
    $1 = (int ***) 0x0
    (gdb) 调用生成器->get_carg()
    $2 = (int ***) 0xf12410

为什么这个分配(一个指针被分配给另一个指针)是分段错误的原因?我怎样才能初始化这个变量?

UPD:我仍然不知道答案,但是当carg变量被重命名时,没有错误。我以为这个名字还有一个变量,但事实并非如此。

4

1 回答 1

1

可能生成器变量尚未初始化并且未指向有效对象。

然后调用 get_cargs() 会导致分段错误。

于 2013-04-21T10:49:22.790 回答