#include<stdio.h>
int main()
{
int a,b,*p,*q;
a=10; b=5; p=&a; q=&b;
float c=3.4, d=4.3, *r,*t;
r=&c; t=&d;
char s='o';
printf("address of a=%u\n",p);
printf("address of b=%u\n",q);
printf("address of c=%u\n",r);
printf("address of d=%u\n",t);
printf("address of s=%u\n",&s);
return 0;
}
这些代码输出像
address of a=1999992860
address of b=1999992856
address of c=1999992852
address of d=1999992848
address of s=1999992847
如果内存分配采用自上而下的方法,那么“d”如何将 1 个字节作为浮点变量?
如果它是自下而上的方法,但实际上并没有采用,那也没关系。
现在,如果我认为自下而上的方法已经完成,那么通过更改 char s='o'
在初始化int a,b
之前,它会给出一些不同的结果。
address of `a=2987907272`
address of `b=2987907268`
address of `c=2987907264`
address of `d=2987907260`
address of `s=2987907279`
请帮忙。
最佳答案
我想你是在问报告的变量地址是起始地址还是结束地址。它是前者,一个起始地址。对象占用地址连续递增的字节。
但是,请注意,神圣标准并没有限制一个对象驻留在连续的字节中,而是谈论一个区域的存储,特别是为了支持多个虚拟继承,可以不连续。
然而,在实践中,最派生的对象占用连续的存储空间。
关于c++ - C中的内存分配过程?是自上而下还是自下而上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21301081/