int main()
{
typedef unsigned char a4[4];
a4 p1;
a4& p2 = p1;
p2[1]=1;
cout<<sizeof(p2);
return p2[1];
}
编译后,在
return
上设置断点并启动gdb。如果您在gdb中键入p sizeof(p2)
,则gdb将打印8,而如果您启动程序,则会打印4。如果您在gdb中输入p sizeof(*p2)
,则输出为4(数组的大小)。我认为这是因为gdb将p2视为指针(引用在幕后实现为指针)。在GCC 4.8.2和Clang 4.3编译器上测试,运行在GDB 7.7 linux arch.,ubuntu 13.10上。这是正确的还是gdb的一个错误?