c - 可变内存位置与符号 vs pmap

标签 c memory

我刚开始在 C 中处理指针,有一件事情让我很困惑......

下面是简单的代码:

int main ()
{

   long ms = 10000000;

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );
   printf("Sizeof of var2 variable: %d\n", sizeof(var2) );

   retpid();
   millisleep(ms);

   return 0;
}

并且 - 它返回 var1var2 内存地址(我相信是虚拟内存?):

$ ./address
Address of var1 variable: 797927b4
Address of var2 variable: 797927a0
Sizeof of var2 variable: 10
PID = 15885

但是 - 当我运行 pmap - 我在那里看不到这个地址:

$ pmap -x 15885
15885:   ./address
Address           Kbytes     RSS   Dirty Mode   Mapping
0000000000400000       4       4       0 r-x--  address
0000000000600000       4       4       4 rw---  address
00007fcdb6bbc000    1576     256       0 r-x--  libc-2.12.so
00007fcdb6d46000    2048       0       0 -----  libc-2.12.so
00007fcdb6f46000      16      16      16 r----  libc-2.12.so
00007fcdb6f4a000       4       4       4 rw---  libc-2.12.so
00007fcdb6f4b000      20      12      12 rw---    [ anon ]
00007fcdb6f50000     128     104       0 r-x--  ld-2.12.so
00007fcdb7160000      12      12      12 rw---    [ anon ]
00007fcdb716d000       8       8       8 rw---    [ anon ]
00007fcdb716f000       4       4       4 r----  ld-2.12.so
00007fcdb7170000       4       4       4 rw---  ld-2.12.so
00007fcdb7171000       4       4       4 rw---    [ anon ]
00007fff79780000      84      12      12 rw---    [ stack ]
00007fff797ff000       4       4       0 r-x--    [ anon ]
ffffffffff600000       4       0       0 r-x--    [ anon ]
----------------  ------  ------  ------
total kB            3924     448      80

我在这里想念什么?

最佳答案

也许您只是遗漏了一半的指针值。打印指针的正确格式是 %p,在具有 64 位地址和 32 位地址的机器上 int 这会产生“显着”差异。

关于c - 可变内存位置与符号 vs pmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534699/

相关文章:

反转打印字符串的C程序

c - 为什么第二个printf打印0

c++ - C & C++ : What is the difference between pointer-to and address-of array?

node.js - Webpack 内存不足

c - 代码行澄清

c - 用于编译的 GCC 链接库

c - fminunc如何优化梯度下降中的学习率(步长比例)值?

Python gzip - 提取.csv.gz 文件 - 内存错误

linux - ioread32 后跟 iowrite32 没有给出相同的值

memory - 如何在无限滚动中从 Puppeteer 中释放内存?