c++ - 如何在 OS X 上获得准确的堆栈基地址?

标签 c++ macos pthreads

  • 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/

相关文章:

pthreads - 等待 pthread_cancel 结束

c - 多线程程序中的输出

c++ - std::deque:如何获得指向指定索引处元素的迭代器?

C++ Direct3D 多屏幕捕获

c++ - 如何使用 visual Studio 2010 编译和构建 librsync?

c++ - Visual C++ 2008 中的单个文件编译和执行?

c++ - 访问 mac osx 应用程序包中资源文件夹中的文件

macos - 核心数据预取和 KVO 合规性

swift - 从文件初始化默认值,Swift 与 Obj-C 不同吗?

c - 使用中间服务器通过 TCP 在 2 个客户端之间传输数据的有效方法