gpt4 book ai didi

c++ - 共享库中全局变量初始化时的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:00 24 4
gpt4 key购买 nike

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

    int ***carg;

这个变量在函数中初始化

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

在哪里

    int*** get_carg();

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

如果这个库正在加载,则存在段错误

Program received signal SIGSEGV, Segmentation fault. 0x00007fffebe05fea in init () at /path/to/project/main.cpp:814

在这个框架中

    (gdb) print carg    $1 = (int ***) 0x0    (gdb) call generator->get_carg()    $2 = (int ***) 0xf12410

为什么这个赋值(一个指针赋值给另一个指针)是段错误的原因?我该如何初始化这个变量?

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

最佳答案

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

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

关于c++ - 共享库中全局变量初始化时的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com