Joh*_*han -1 c++ memory pointers
以下main()是我尝试解码指针值的重要性之一:
int main(){
int a = 15, b = 27;
int *p = &a, *q = &b;
cout << p << ',' << q;
}
Run Code Online (Sandbox Code Playgroud)
打印的两个值是十六进制,即p = 0x28fef4, q = 0x28fef0.它们看起来像十六进制值,表示 2686708和2686704十进制.
这提出了一些问题,您可以根据自己的喜好回答这些问题.
为什么q小于p?我希望内存按升序分配,但是q < p.
为什么地址很少改变?几个小时前我运行了一个类似的程序,我记得那个地址也是0x28fef4那个时候.
十六进制值中的一个单位代表什么?一点点?一个字节?
我有大约8 GB的内存(RAM).与我的RAM容量相比,为什么值p和q这么小?
随意回答任何或所有这些问题,或提供有关指针的任何相关信息.
谢谢.
为什么q小于p?我希望内存按升序分配,但q <p.
我不确定你为什么会这么想.它可能有什么不同?
为什么地址很少改变?几个小时前我运行了一个类似的程序,我记得地址也是0x28fef4.
显然,您的平台不会随机化堆栈地址.相同的堆栈,相同的地址.
十六进制值中的一个单位代表什么?一点点?一个字节?
一个字节.
我有大约8 GB的内存(RAM).为什么p和q的值与RAM容量相比如此之小?
物理内存与此无关.这些是虚拟内存地址,而不是物理内存地址.