- pthread_attr_getstackaddr给我一个像
0xffffffffffff80000
这样的值,它看起来不像是一个有效的基址。 pthread_get_stackaddr_np
,如 this answer 中所述并且似乎没有记录且不可移植,给了我一个像0x00007fff5fc00000
这样的值,这似乎更明智。但是,当我在我的程序中放置一个随机断点(使用 gdb 或 lldb)并打印堆栈指针时,我得到的地址低于上面返回的地址(例如0x00007fff5fbfe7e0
) .
所有操作都在 pthread_self
上完成,我从不切换线程。有什么想法吗?
最佳答案
在 Mac OS X(以及一般的 x86 系列处理器)上,堆栈从高地址到低地址向下增长。所以变量应该在栈基址之下。
关于c++ - 如何在 OS X 上获得准确的堆栈基地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062665/