gpt4 book ai didi

c - C 变量的真实内存位置

转载 作者:太空狗 更新时间:2023-10-29 17:09:13 29 4
gpt4 key购买 nike

为了学习更多关于 C 的知识,我在过去的 2 天里一直在玩它。我想开始研究 C 在运行时的结构,所以我构建了一个蹩脚的程序,要求用户输入两个整数值,然后打印整数变量的内存位置。然后我想验证数据是否确实存在,所以我用 getchar() 暂停了程序,以便打开 GDB 并挖掘内存段来验证数据但是,这些位置的数据没有多大意义我。有人可以解释一下这里发生了什么吗。

程序代码:

#include <stdio.h>

void pause();

int main() {
int a, b;
printf("Please enter number one:");
scanf("%d", &a);
printf("Please enter number two:");
scanf("%d", &b);
printf("number one is %d, number two is %d\n", a, b);
// find the memory location of vairables:
printf("Address of 'a' %pn\n", &a);
printf("Address of 'b' %pn\n", &b);
pause();
}

void pause() {
printf("Please hit enter to continue...\n");
getchar();
getchar();
}

输出:

[josh@TestBox c_code]$ ./memory 
Please enter number one:265
Please enter number two:875
number one is 265, number two is 875
Address of 'a' 0x7fff9851314cn
Address of 'b' 0x7fff98513148n
Please hit enter to continue...

内存段的 GDB 十六进制转储:

(gdb) dump memory ~/dump2.hex 0x7fff98513148 0x7fff98513150

[josh@TestBox ~]$ xxd dump2.hex
0000000: 6b03 0000 0901 0000 k.......

最佳答案

6b03000009010000 是小尾数法(最低有效字节在前)。要以更自然的方式阅读它们,请颠倒字节顺序:

6b030000 => 0000036b => 875 十进制

09010000 => 00000109 => 265 十进制

关于c - C 变量的真实内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44393891/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com