我从gdb中发现了一个奇怪的行为。请帮我识别一下。 以下是受影响的片段。 注意:以下for循环不应执行两次以上,因为totNumEntries的最大值为2。
totNumEntries = callLegPtr->activeSpContextPtr->directMediaPtr->numEntries;
for (index = 0; index < totNumEntries; index++)
{
.......
}
通过gdb打印值:
(gdb) p index
$79 = 35933
(gdb) p totNumEntries
$80 = 65535
(gdb) p callLegPtr->activeSpContextPtr->directMediaPtr->numEntries
Cannot access memory at address 0x53369955
根据gdb打印,0x53369955没有绑定且无法访问但仍然可以看到“totNumEntries”具有值65535,因为上面的循环进行了多次迭代(35933)并且我们的进程声明超时。 totNumEntries的类型是无符号短(最大值为65535)。
我关心的是“无法访问地址0x53369955处的内存”的含义。当0x53369955无法访问时,“totNumEntries”如何获取大值,其中unsigned int类型的最大范围。对我来说非常重要,如果您需要任何进一步的信息,请告诉我。
此致 沙希德·侯赛因