c++ - 如何查找变量是在堆栈还是堆中分配?

标签 c++ c heap-memory stack-memory

在某处偶然发现了这个面试问题,

在 C 中, 给定一个变量x,你如何知道该变量的空间是分配在栈上还是堆上?

(有什么方法可以通过编程方式找到它,而不必通过符号表等?查找空间是在堆栈还是堆中分配是否有任何实际意义?)

最佳答案

不,不是一般的。

你知道 gcc -fsplit-stack ?

由实现决定是分配一个连续的堆栈还是一个堆栈,其中 block 与内存中的堆 block 交错。祝你好运,当后者被拆分时,弄清楚是为堆分配了 block 还是为堆栈分配了 block 。

关于c++ - 如何查找变量是在堆栈还是堆中分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719563/

相关文章:

c - 在 Linux 中获取每个进程的堆和堆栈的大小

c++ - 为什么不能释放堆栈上的变量?

c++ - 剖析; ippvmGetLibVersion : I didn't call it

c++ - 与模板函数一起使用时没有模板结构的隐式转换

c++ - 从 Matlab 连接到本地服务器

c - 使用递归函数添加数字

c - 为什么 int 变量不会在寻址方面出现在 char 数组之前,无论我如何在 C 中对其进行编码?

c - c/c++ 中的 gcc 编译器是否保证将指向 const 数据的全局 const 指针放置在单独的只读部分中?

android - 当 Activity 被杀死时堆大小如何增加

c++ - 将 char 数组转换为整数