10得票1回答
建议堆栈分配的最大大小

假设需要一个固定大小的缓冲区,是否有尺寸限制或阈值,使得在该尺寸限制下使用快速堆栈分配的std :: array是可以接受的,而超过该限制则最好使用从堆动态分配内存的std :: vector(因为堆栈内存很珍贵,不应消耗太多)? // I think allocating 32 bytes...

20得票4回答
Linux进程的堆栈大小是否有限制?

在Linux中,进程的堆栈大小是否有限制?这与机器的RAM有关吗? 我想知道这个问题是为了限制递归调用函数的深度。

8得票1回答
Linux上的堆栈起始位置

我认为可以通过获取main函数中变量的地址并向上取整到页面边界来获得我的进程堆栈的起始位置(考虑到我的堆栈是向下增长的)。 我将此与/proc/self/maps报告的边界进行比较,它总是偏移1、2或3页(每页4096字节),从未有不同的偏移。差异随着每次运行而变化,并且以下C程序在使用的管...

8得票3回答
有关Java中'new'关键字的内存问题

如果运行以下代码会发生什么? while (true) { String x = new String("ABC"); } 关于内存方面的问题? String x 是在栈上还是堆上分配的?程序是否会因为内存溢出而崩溃,还是会被垃圾回收机制阻止?new 关键字是否总是在堆上创建对...

30得票5回答
程序堆栈和堆是如何工作的?

我知道每个正在运行的进程都有与之关联的虚拟内存页面,其中一些页面将根据需要加载到主内存中。我也知道程序将具有堆栈和堆来分配动态内存。以下是我的问题。 堆栈是否也是主内存中某个页面的一部分? 当程序移动到等待状态时会发生什么?堆栈指针、程序计数器和其他信息存储在哪里? 为什么堆栈向下增长而堆...

9得票4回答
C++中的自动变量

可能重复:在C ++中,为什么应该尽可能少地使用new? 在C ++中,自动变量分配在堆栈还是堆上? 此外,我在7.9 - 堆栈和堆 中读到,堆栈上分配的所有内存都在编译时已知。这是真的吗?这是否意味着只有静态内存分配发生在堆栈上? 另外,请提供关于C ++中内存分配的完整解释性文本的链...

16得票2回答
Java能在栈上分配列表吗?

每次我在Java中初始化一个列表时,我都会这样做:List<Integer> list = new LinkedList<>(); 我认为这将在堆上分配列表。不知道有没有办法在栈上分配列表?

33得票3回答
类的字段是存储在栈还是堆中?

昨天我看到了一个问题,它引发了我另外一个问题。请看下面的代码:public class Class1 { int A; //as I uderstand, int is value type and therefore lives in the stack } class Class2...

14得票2回答
什么是参数推送顺序?

我正在学习汇编语言。什么是参数推送顺序?我知道这是如何将参数推送到堆栈中,但是“左侧”和“右侧”的含义是什么?相对于什么的左侧或右侧?还是这只与命令的语义书写方式有关,例如:mov ebp, esp ;esp is moved into ebp, right to le...

144得票5回答
x86汇编中使用push/pop指令对寄存器的作用是什么?

阅读有关汇编语言的文章时,经常遇到人们写道他们将处理器的某个寄存器“push”一下,然后稍后再“pop”回来以恢复其先前的状态。 这是什么意思呢?如何将寄存器“push”起来?它被推到哪里去了?为什么需要这样做? 这是否简化为单个处理器指令,还是更加复杂?