共享库中全局变量初始化时出现分段错误

Segmentation fault at global variable initialization in shared library

本文关键字:分段 错误 初始化 全局变量 共享      更新时间:2023-10-16

我有一个包含全局变量

的共享库<>之前int * * * carg;之前

这个变量在函数

初始化<>之前__attribute__((构造函数))void init(void) {Carg = generator->get_carg();}之前

,

<>之前int * * * get_carg ();之前

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

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

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

在这个框架中

<>之前(gdb)打印文件$1 = (int ***) 0x0调用生成器->get_carg()$2 = (int ***) 0xf12410之前

为什么这个分配(一个指针分配给另一个指针)是分割故障的原因?我怎么初始化这个变量呢?

UPD:我仍然不知道答案,但是当carg变量被重命名时,没有错误。

可能是生成器变量还没有初始化,没有指向一个有效的对象。

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