gdb 调试会话中的 malloc 在运行某些代码后返回无法访问的地址。
在 main 函数开始时第一次中断。一切都好。
Breakpoint 9, main (argc=5, argv=0x7fffffffe418) at src/ose/sdv/ose_sdv/linux/main.c:557
557 char *cfgfile = NULL;
(gdb) call malloc(4)
$50 = 23293968
(gdb) x 23293968
0x1637010: 0x00000000
(gdb) c
运行一些行后,它开始返回从 0xffffffff 开始的不可访问的内存地址~
Program received signal SIGINT, Interrupt.0x00007ffff70c1f4d in read () from /lib64/libc.so.6
(gdb) call malloc(4)
$52 = -1811110576
(gdb) x -1811110576
0xffffffff940ca550: Cannot access memory at address 0xffffffff940ca550
我正在使用 64 位 linux 操作系统。
我找不到导致这种情况的确切代码行。
malloc 开始喜欢这个的那一行总是变化。
运行时未发生异常,程序按预期运行。我不确定这里有什么问题。