无法访问地址内存?

时间:2015-10-20 13:14:04

标签: c gdb

我从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类型的最大范围。对我来说非常重要,如果您需要任何进一步的信息,请告诉我。

此致 沙希德·侯赛因

0 个答案:

没有答案