堆栈上的缓冲区是什么样的

时间:2014-03-13 17:47:30

标签: c arrays stack int buffer

在c中保留堆栈上的缓冲区时。存储元素的顺序是什么?

示例:

char buf[4];

让我们说堆栈现在看起来像这样:

return addr
basepointer
buf
buf
buf
buf <-stack pointer points here

然后你这样做:

myArray[0]=6;

堆栈是否如下所示:

return addr
basepointer
buf
buf
buf
6 <-stack pointer points here

或者喜欢:

return addr
basepointer
6
buf
buf
buf <-stack pointer points here

如果你有一个int数组并在其中一个数组索引中存储一个int,那该怎么办呢? int的第一个字节是在底部(靠近堆栈指针)还是在顶部(靠近basepointer)?

1 个答案:

答案 0 :(得分:2)

对此没有一般性的答案,由编译器决定如何布局变量。不同的编译器可以做出不同的选择,具有不同编译标志的相同编译器也可以导致不同的选择。它甚至可能(虽然通常不太可能也不希望)相同的编译器和标志从不同的编译中产生不同的结果。