C++内存地址分配简介
2011-02-15 00:01
309 查看
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]。
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]。
相关文章推荐
- C++内存地址分配和内存区划分简介
- C++内存地址分配和内存区划分简介
- C++内存地址分配和内存区划分简介
- C++内存地址分配和内存区划分简介
- C++内存地址分配和内存区划分简介
- C++内存地址分配和内存区划分简介
- C++内存地址分配简介
- C++容器内存分配特点简介
- (转载)C++内存地址分配
- C/C++中的内存地址分配问题
- C/C++程序内存地址出错查找方法简介
- 待补遗(3)[C++]C++与处理大小端相关示例及不同变量内存地址的分配原则
- C/C++程序内存地址出错查找方法简介
- C++内存地址分配与划分
- C++内存地址分配与划分
- C++ 中 vector 如何实现内存分配
- c++中指针与动态内存的分配
- Carbide.C++ IDE简介
- C++中STL迭代器的种类和简介http://blog.csdn.net/woshifeixingzhuiyue/article/details/7376308
- 工厂模式简介(C++实现)