关于32位和64位下面类的默认内存对齐规则

liups liups 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
经过本人测试,好象与网上很多人说的不一样,默认对齐应该是和指针长度一样而不是很多人说的int长度一样,有请大神讲解一下。
测试代码如下:
 //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.

jqb

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的结构对齐规则不同,处理内存中的数据时需考虑这一点。

昵称Splendour

32位与64位程序间通信,通过共享内存实现

对于32位程序,它会在其自身的32位地址空间中创建内存区域;而在64位程序中,尽管地址空间扩大了,但只要拥有相同的命名规则,就能找到并访问32位程序创建的内存区域。

ForgetTomorrow
评论 24
收藏 已收藏
分享
返回顶部
liups
C++ 语言 65,214 成员 250,514 内容