Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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+中引用地址如何变为空+;?_C++ - Fatal编程技术网

C++ C+中引用地址如何变为空+;?

C++ C+中引用地址如何变为空+;?,c++,C++,我有一个coredump,它显示一个引用地址为空 详情: (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x005b6c10 in raise () from /lib/libc.so.6 #2 0x005b8521 in abort () from /lib/libc.so.6 #3 0xf749e641 in Application::fatalSignal () at Application.cc:277 #4 <sig

我有一个coredump,它显示一个引用地址为空

详情:

(gdb) bt
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x005b6c10 in raise () from /lib/libc.so.6
#2  0x005b8521 in abort () from /lib/libc.so.6
#3  0xf749e641 in Application::fatalSignal () at Application.cc:277
#4  <signal handler called>
#5  SdlProcess::procedureReturn (this=0x0, aSignal=0, aArg1=1, aArg2=0x0)
    at /include/c++/4.1.1/bits/stl_list.h:652
#6  0x08112edb in Sdl::authFailurer (aSdlProcess=@0x0, aLabel=0, aSignal=0, arg2=0x0) at /Mgr/SdlAuth.cc:1781
#7  0x00000000 in ?? ()
================
define:
Sdl::authFailurer(SdlProcess& aSdlProcess, int aLabel, int aSignal, int /*arg1*/, void* arg2)

#5 aSdlProcess.procedureReturn(0, 1, 0);

可以通过取消对空指针的引用来获取空引用。我不确定在这种特殊情况下会发生什么,除非
mProcedureStack
是一个引用。

此问题最常见的原因是当您返回一个悬空引用时,例如:

int& foo() {
   int bar = 5;
   return bar;
}

foo
的返回引用现在指向堆栈,并且将包含未定义的数据。

引用只能通过未定义的行为变为
NULL
,例如取消引用
NULL
指针。list mProcedureStack;
int& foo() {
   int bar = 5;
   return bar;
}