0xfffffffffff80000
的值,它似乎不是一个有效的基地址。pthread_get_stackaddr_np
,例如this answer中记录的并且似乎没有文档且不可移植,给我一个类似0x00007fff5fc00000
的值,这似乎更明智。但是当我在我的程序中放置一个随机断点(使用gdb或lldb)并打印stackpointer时,我得到下面上面返回的地址(例如0x00007fff5fbfe7e0
)。所有操作都在pthread_self
完成,我从不切换线程。有什么想法吗?
答案 0 :(得分:1)
在Mac OS X(以及一般的x86系列处理器)上,堆栈从较高地址向较低地址逐渐减少。所以变量应该低于堆栈基址。