【问题标题】:C - Investigating stack and heap contents programC - 调查堆栈和堆内容程序
【发布时间】:2015-10-01 12:04:52
【问题描述】:

我将如何编写一个 C 程序来列出堆栈和堆的所有内容,包括它自己的变量和分配错误?

这样做的目的是让我在编写和测试代码时能够看到内存中发生了什么。

【问题讨论】:

  • 您需要能够读取和解析程序调试信息(如果有)的东西,否则您将永远无法识别变量。
  • 另外,在我看来,一个有趣的问题没有错。
  • 正如 Bathsheba 所指出的,仅使用 C 规范是无法做到的。您需要使用特定于平台的构造。因此,为了有意义,您的问题应该确定您所针对的平台。
  • 关于目的,使用调试器。您想要做的并不是微不足道的,特别是如果您希望它具有足够的弹性以在某些错误破坏内存时不会崩溃。我只是说“有弹性”,而不是“有用”。

标签: c memory heap-memory stack-memory


【解决方案1】:

c 标准没有明确提到堆栈或堆。再加上编译出变量和函数名的事实,这意味着您的任务是不可能的。

可以构建您自己的编译器,这将是一个有效的调试工具。但这太荒谬了,因为这样的东西需要很长时间才能构建,而且随着标准的发展,你必须不断地适应它。或者您可以使用生成调试符号的编译器的输出。

更好的是,学会使用一个好的调试器。

【讨论】:

  • 好吧,我刚刚意识到我的问题有点太疯狂了,它是出于好奇,看到我的 IDE 没有提供任何类型的“地图”,我可以在其中看到内存中发生的事情当我玩指针/变量等时。感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 2011-03-06
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多