关于32位和64位下面类的默认内存对齐规则
测试代码如下:
//program 12.7.1.cpp const成员和引用成员
#include <iostream>
using namespace std;
int f;
class CDemo {
private :
const int num; //常量型成员变量
int & ref; //引用型成员变量
int value;
public:
CDemo( int n):num(n),ref(f),value(4)
{
}
};
int main(){
int*p;
cout << sizeof(CDemo) << endl;
cout << sizeof(int) << endl;
cout << sizeof(p) << endl;
system("pause");
return 0;
}
相关推荐
C++的sizeof学习总结
例如,`int`在32位系统上通常为4字节,在64位系统上可能为8字节。`sizeof(char)`总是返回1,因为它是最小的内存单元。2.
32、64位数据类型占用字节以及内存对齐原理
文章目录32位编译器:32位系统下指针占用4字节64位编译器:64位系统下指针占用8字节内存对齐原理1.什么是内存对齐2.结构体内存对齐规则(请记住三条内存规则(在没有#pragam pack宏的情况下) 32位编译器:32位系统下指针占用4字节 char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节 unsigned int : 4个字节 f
c/c++:内存对齐详解
目录 一、内存对齐原因 二、如何内存对齐 三、内存对齐案例 3.1对齐模数:8 3.2 对齐模数:4 3.3 实践说明 四、32位机和64位机内存对齐的区别 一、内存对齐原因 我们知道内存的最小单元是一个字节,当cpu从内存中读取数据的时候,是一个一个字节读取,所以内存对我们应该是入下图这样: 但是实际上cpu将内存当成多个块,每次从内存中读取一个块,这个块的...
完美的内存中加载DLL支持32位和64位DLL
**跨平台支持**: - **结构对齐**:32位和64位DLL的结构对齐规则不同,处理内存中的数据时需考虑这一点。
32位与64位程序间通信,通过共享内存实现
对于32位程序,它会在其自身的32位地址空间中创建内存区域;而在64位程序中,尽管地址空间扩大了,但只要拥有相同的命名规则,就能找到并访问32位程序创建的内存区域。


