【发布时间】:2012-11-23 01:29:39
【问题描述】:
在某处偶然发现了这个面试问题,
在 C 中,
给定一个变量x,如何知道该变量的空间是在栈上还是堆上分配的?
(有没有什么方法可以通过编程方式找到它而不必通过符号表等?找到空间是在堆栈还是堆中分配是否有任何实际意义?)
【问题讨论】:
-
查看汇编代码..你可以在那里得到它
-
他还提过什么吗?比如架构、编译器、操作系统?否则我会拒绝。
-
不,这是唯一给出的信息。
-
我认为没有便携式解决方案。两种语言都没有堆栈或堆之类的东西,所以问题更多的是关于语言的给定实现。例如,如果您正在查看 GCC,它有大量与 malloc 相关的实用程序可能会有所帮助。
-
他们通常不是在“正确答案”之后——他们通常是在展示堆、堆栈、调用约定、局部变量所在的位置以及编译器优化等知识之后,方向堆栈增长,不同架构如何管理堆和堆栈等。这是一个相当开放的问题,可以让面试官很好地了解某人知道什么。
标签: c++ c heap-memory stack-memory