C++内存地址分配简介

来源:互联网 发布:播放dsd软件 编辑:程序博客网 时间:2024/05/20 09:47

1 栈中的变量,其内存地址是从高地址到低地址进行分配的:
int i=1;
int j=1;
cout<<&i<<endl<<&j<<endl; //输出:0012FF60(高地址处) 0012FF54(低地址处)

int * pi = new int(10);
float * pf = new float(1.1);
cout<<pi<<endl<<pf<<endl; // 输出:0x602010(低地址) 0x602030(高地址),指针指向的位置是在堆里,所以地址从低到高

2 函数参数列表的存放方式是,先对最右边的形参分配地址,后对最左边的形参分配地址。

3 Little-endian模式的CPU对操作数的存放方式是从低字节到高字节的,0x1234的存放方式入下:
0X4000 0x34
0X4001 0x12

4 Big-endian模式的CPU对操作数的存放方式是从高字节到低字节的,0x1234的存放方式入下:
0x4000 0x12
0x4001 0x34

5 联合体union的存放顺序是所有成员都从低地址开始存放。

6 一个变量的地址是由它所占内存空间中的最低位地址表示的。
0X4000 0x34
0X4001 0x12
那么,0x1234 的地址位0x4000

7 堆栈的分配方式是从高内存地址向低内存地址分配的。
int ivar=0;
int iarray[2]={11, 22};
注意iarray[2]越界使用,比如对其赋值 iarray[2]=0; 那么则同时对ivar赋值为0,可能产生死循环,因为它们的地址相同,即&ivar等于&iarray[2]。

原创粉丝点击