Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 共享库中全局变量初始化时的分段错误_C++_Segmentation Fault_Global Variables_Shared Libraries - Fatal编程技术网

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

C++ 共享库中全局变量初始化时的分段错误,c++,segmentation-fault,global-variables,shared-libraries,C++,Segmentation Fault,Global Variables,Shared Libraries,我有一个包含全局变量的共享库 int ***carg; int***carg; 此变量在函数处初始化 __attribute__((constructor)) void init(void) { carg = generator->get_carg(); } __属性(构造函数)void init(void){ carg=生成器->获取carg(); } 在哪里 int***get_carg(); 只返回预初始化的carg数组 如果此库正在加载,则存在分段错误 程序接收信

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

int ***carg; int***carg; 此变量在函数处初始化

__attribute__((constructor)) void init(void) { carg = generator->get_carg(); } __属性(构造函数)void init(void){ carg=生成器->获取carg(); } 在哪里

int***get_carg(); 只返回预初始化的carg数组

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

程序接收信号SIGSEGV,分段故障。 0x00007fffebe05fea位于/path/to/project/main.cpp:814的init()中

在这个框架中

(gdb) print carg $1 = (int ***) 0x0 (gdb) call generator->get_carg() $2 = (int ***) 0xf12410 (gdb)打印卡 $1=(整数***)0x0 (gdb)呼叫生成器->获取车() $2=(整数***)0xf12410 为什么这个赋值(一个指针被赋值给另一个指针)是分段错误的原因?如何初始化这个变量


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

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


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

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

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

不,get_cargs()没有问题,因为在此帧中,
(gdb)打印生成器->get_carg()[0][0][0]
正在工作。令我惊讶的是,我可以调用生成器->获取cargs()
(gdb)$5
(gdb)设置carg=$
,并且没有任何错误,不,获取cargs(),这没问题,因为在这个框架中,
(gdb)打印生成器->获取carg()[0][0]
正在工作。令我惊讶的是,我可以
(gdb)调用生成器->获取cargs()
(gdb)$5
(gdb)设置carg=$
,而且没有错误 (gdb) print carg $1 = (int ***) 0x0 (gdb) call generator->get_carg() $2 = (int ***) 0xf12410