#include<stdio.h> #include<stdlib.h> int main() { int *a = (int*)malloc(sizeof(int)); *a = 1; printf("\na = %d", *a); printf("\na heap address = %p", a); printf("\n&a stack address = %p", &a); printf("\n"); free(a); } gcc programname.c //编译 ./a.out //运行 结果如下(程序打印出的结果不尽相同): a = 1 a heap address = 0x7fd67bc000e0 &a stack address = 0x7fff528d8ac8 第一行表示 变量a的值为1 第二行表示 变量a所存储的内存地址0x7fd67bc000e0,(存放整数 ‘1’ 所用的4个bytes, 64位机器的话就是8个bytes),这块内存在堆上-heap 第三行表示 变量a本身(一个整数型指针 int* )的内存地址0x7fff528d8ac8,这块内存在栈上-stack。建议参考 ARM寻址方式 @Hao Dong
gcc programname.c //编译
./a.out //运行
结果如下(程序打印出的结果不尽相同):
第一行表示 变量a的值为1
第二行表示 变量a所存储的内存地址0x7fd67bc000e0,(存放整数 ‘1’ 所用的4个bytes, 64位机器的话就是8个bytes),这块内存在堆上-heap
第三行表示 变量a本身(一个整数型指针 int* )的内存地址0x7fff528d8ac8,这块内存在栈上-stack。建议参考 ARM寻址方式 @Hao Dong