1
评估变量/功能我有以下代码,在gdb
...
char* seg = mmap(0, ...)
printf("seg=%x\n", seg);
...
该程序打印与seg=b7ffd000
。而在gdb(执行相同)时,使用p/x seg
时,它会打印$2 = 0x0
。我很困惑。是不是一样var seg
?为什么值不同。
PS:在mmap
中,第一个参数是映射内存的优先地址,返回值是映射内存的实际地址。
您是否在编译时启用了优化? – 2011-04-28 19:29:43
是的,当-O3被移除时,问题就消失了。对原因感兴趣。像哪个值是内存的真实地址,启用了优化... – Richard 2011-04-28 21:00:31