c - 指针地址如何具有不同的长度?

标签 c pointers c99 pointer-address

我刚刚执行了这个代码示例:

int *i = (int*) malloc( sizeof(int) );
printf( "%p, %p\n", &i , i );

这就是我得到的:

0x7fff38fed6a8, 0x10f7010

所以我想知道为什么第二个地址比第一个短?

最佳答案

i 在栈上,而它指向的内存块在堆中。在您的平台上,这是两个截然不同的内存区域,恰好堆地址在数值上相对较低,因此它有很多未显示的前导零,即

&i = 0x7fff38fed6a8; // stack
 i = 0x0000010f7010; // heap

关于c - 指针地址如何具有不同的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597493/

相关文章:

arrays - C中参数数组类型中的 “static”是什么意思?

c - 如果 if 语句返回相同的内容,C 编译器是否会合并它们?

c - 在 C99 中使用检查单元测试框架时出现语法错误

c - 我如何在 ncurses 中使用超过 8 种颜色?

c - c 中的字计数器不起作用

python - [ python ] : how to get the string from the pointer by using ctypes?

c++ - C vector 错误 'char(*)[]: unknown size' - vector 删除迭代器超出范围

c - 为 Windows 编写自己的备忘录

c - 如何开始为遗留嵌入式 C 应用程序编写单元测试 - 非常紧密耦合的模块?

c - 如何将文件中的纯文本解析为二维矩阵/数组?