c++ - 如何访问调用堆栈?

标签 c++ callstack

我有一个由父节点和子节点组成的树数据结构,是这样的:

<Node1>
  <Node2/>

  <Node3>
    <Node4/>
  </Node3>
</Node1>

为了解析结构,我使用了 μ 递归函数:

void RecursiveFunction(NodeT node)
{
    if(node.has_child())
        RecursiveFunction(node.child());
}

当我调用 RecursiveFunction 作为参数传递时,例如,Node2 我想访问父亲(Node1)数据而不使用其他数据结构存储这些数据,因为第一个节点的数据已存储在调用中在进行递归调用之前堆栈。所以我需要访问调用堆栈来读取 Node1 的数据,同时解析 Node2 无法直接访问父亲,等等。

例如,如果我正在解析 Node4:

void RecursiveFunction(NodeT node)
{
    /* Access to Node3 and Node1 data...

    if(Node4.has_child())
        RecursiveFunction(Node4.child()); */
}

这可能吗?以什么方式?

谢谢。

最佳答案

这是可能的,但这样做是相当危险的。这主要是因为您想弄乱进程堆栈。此外,我认为没有任何库函数可以这样做,也就是说您必须进行一些指针运算才能实现这一点。

关于c++ - 如何访问调用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279785/

相关文章:

c++ - 库的某些非内联方法错误 "undefined reference to"

android - ZBar 库构建失败,Android NDK(预期标识符或 '(' 之前的 '.')

windows - WinDbg 没有显示整个调用堆栈?

debugging - 在 Clojure 中获取调用堆栈

callstack - 为什么没有 "generic events"的调用堆栈

assembly - 将局部变量与 16 字节边界对齐 (x86 asm)

c++ - opengl,如何最好地使用 visual studio 更新标题?

c++ - Push.back into vector behavior maybe or something wrong with my for statement?

c++ - 复制通过引用传递给函数的多维 vector

c++ - 在 C++ 中动态创建函数调用