相关疑难解决方法(0)

堆栈上的局部变量分配顺序

看看这两个功能:

void function1() {
    int x;
    int y;
    int z;
    int *ret;
}

void function2() {
    char buffer1[4];
    char buffer2[4];
    char buffer3[4];
    int *ret;
}
Run Code Online (Sandbox Code Playgroud)

如果我打破function1()gdb,并打印变量的地址,我得到这个:

(gdb) p &x  
$1 = (int *) 0xbffff380
(gdb) p &y
$2 = (int *) 0xbffff384
(gdb) p &z
$3 = (int *) 0xbffff388
(gdb) p &ret
$4 = (int **) 0xbffff38c
Run Code Online (Sandbox Code Playgroud)

如果我做同样的事情function2(),我得到这个:

(gdb) p &buffer1
$1 = (char (*)[4]) 0xbffff388
(gdb) p &buffer2
$2 = (char (*)[4]) …
Run Code Online (Sandbox Code Playgroud)

c memory x86 stack gcc

26
推荐指数
4
解决办法
2万
查看次数

标签 统计

c ×1

gcc ×1

memory ×1

stack ×1

x86 ×1