【发布时间】:2014-04-27 12:09:54
【问题描述】:
我写了一个简单的程序,在声明一个变量后,我正在检查变量的地址,但内存没有连续分配,两者之间存在间隙。 这是我的程序。为什么留下我不理解的空白
#include < stdio.h >
#include < stdint.h >
int main()
{
char char_one,char_two;
int a = 5,b = 7,*ptr,*ptr_one;
static int *sum_ptr;
printf("address of a %u\n",&a);
printf("address of variable b %u\n",&b);
printf("address of ptr variable %u\n",&ptr);
printf("address of ptr_one variable %u\n",&ptr_one);
printf("address of char_one var %u\n",&char_one);
printf("address of char_two var %u\n",&char_two);
return 0;
}
输出: 2636128020的地址
变量b的地址2636128024
ptr变量地址2636128000
ptr_one变量地址2636128008
char_one var 2636128030 的地址
char_two var 2636128031 的地址
【问题讨论】:
-
那又怎样? GCC 可以做任何他“想要”的事情
-
你为什么在乎?您要解决的实际问题是什么?如果您真的想按特定顺序排列它们,请将它们放在一个结构中——然后它们将保持有序。
-
为什么你认为在这种情况下应该这样做?
-
我观察到的大多数情况是连续分配的,这就是为什么我认为它会在连续位置分配内存。感谢您澄清我的疑问。
-
随机分配内存后,中间的内存是否可用?
标签: c memory gcc memory-management