C 堆栈上的缓冲区是什么样子的
当您在c中的堆栈上保留缓冲区时。元素的存储顺序是什么 例如:C 堆栈上的缓冲区是什么样子的,c,arrays,stack,int,buffer,C,Arrays,Stack,Int,Buffer,当您在c中的堆栈上保留缓冲区时。元素的存储顺序是什么 例如: char buf[4]; 假设堆栈现在看起来像这样: return addr basepointer buf buf buf buf <-stack pointer points here 堆栈是否看起来像: return addr basepointer buf buf buf 6 <-stack pointer points here 返回地址 基准指针 缓冲器 缓冲器 缓冲器 6对于这个问题没有一般的答案,由编
char buf[4];
假设堆栈现在看起来像这样:
return addr
basepointer
buf
buf
buf
buf <-stack pointer points here
堆栈是否看起来像:
return addr
basepointer
buf
buf
buf
6 <-stack pointer points here
返回地址
基准指针
缓冲器
缓冲器
缓冲器
6对于这个问题没有一般的答案,由编译器决定如何布置变量。不同的编译器可以做出不同的选择,具有不同编译标志的同一个编译器也可以导致不同的选择。同一个编译器和标志从不同的编译中产生不同的结果甚至是可能的(尽管通常不太可能也不需要)。这个问题不可回答。所有这些都是特定编译器的实现细节。你为什么想知道这些?让编译器按照它认为合适的方式布置堆栈框架。我有一个赋值,我们需要在给定的二进制文件上执行缓冲区溢出。它与赋值相关,但显然取决于编译器。我现在发现我的缓冲区不在我假设的地址上。我现在测试了它,找到了这个二进制文件的答案。谢谢。事实上根本不需要把本地人放在堆栈上。如果你没有记录他们的地址,那么他们可以注册。
return addr
basepointer
buf
buf
buf
6 <-stack pointer points here
return addr
basepointer
6
buf
buf
buf <-stack pointer points here