c++ sizeof和alignof区别
时间:2021-09-07
本文章向大家介绍c++ sizeof和alignof区别,主要包括c++ sizeof和alignof区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
sizeof : 获取内存存储的大小。
alignof : 获取地址对其的大小,POD里面最大的内存对其的大小。
1 struct A{ //non-POD type 2 int avg; 3 int avg2; 4 double c; 5 A(int a,int b):avg((a+b)/2){ 6 7 } 8 }; 9 10 struct B{ 11 int avg; 12 int avg2; 13 char c; 14 }; 15 using namespace std; 16 int main() { 17 18 cout<<"sizeof(A):"<<sizeof(A)<<endl; 19 cout<<"alignof(A):"<< alignof(A)<<endl; 20 21 cout<<"sizeof(B):"<<sizeof(B)<<endl; 22 cout<<"alignof(B):"<< alignof(B)<<endl; 23 }
输出结果:
sizeof(A):16 alignof(A):8 sizeof(B):12 alignof(B):4
std::aligned_storage可以看成一个内存对其的缓冲区,原型如下:
template<std::size_t Len, std::size_t Align >= /default-alignment/>
Len表示所存储类型的sie, Align表示该类型的内存对齐大小
#include <iostream> using namespace std; struct A { //non-POD type int avg; int avg2; double c; A(int a, int b) : avg((a + b) / 2) {} }; int main() { typedef std::aligned_storage<sizeof(A), alignof(A)>::type A_pod; A_pod a, b; new (&a) A(10, 20); b = a; // cout<<b.avg<<endl;//错误 // cout<< reinterpret_cast<A>(b).avg<<endl;//错误 cout << reinterpret_cast<A &>(b).avg << endl; //正确 return 0; }
原文地址:https://www.cnblogs.com/sunbines/p/15240551.html
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装ubuntu虚拟机)-(5)
- 从MapX到MapXtreme2004[9]-标注的强调显示
- 【第一季】Vue2.0内部指令
- 从MapX到MapXtreme2004[9]-标注的强调显示
- 分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题
- 常用Lambda表达式实例
- centos6.8部署vnc服务
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
- 分组合计且排序和显示名称
- silverlight动态读取txt文件/解析json数据/调用wcf示例
- Junit加载Spring容器作单元测试_添加事务回滚
- 实现三遍决策树,你就会想出更快的算法!
- 将一段复杂文本变成字符串的赋值语句
- Linux下squid代理缓存服务环境部署
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「干货」基本数据类型和引用数据类型的区别
- int 和 integer :装箱和拆箱的过程,会用到什么方法,你觉得这个会对性能有影响吗,原因是什么(百度一面)
- 数组:这个循环可以转懵很多人!
- 企业远程办公视频会议系统EasyRTC-SFU下侧边栏边框超限问题如何解决?
- 编写高质量可维护的代码:数据建模
- 新版企业远程办公视频通话系统EasyRTC-SFU,如何解决用户登录信息更新不及时的问题?
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
- 33.Python字符串方法find以及与序列解包的技巧结合
- 代码审计从0到1 —— Centreon One-click To RCE
- 一文带你深扒ClassLoader内核,揭开它的神秘面纱!
- 小知识:OGG的TRANLOGOPTIONS MINEFROMACTIVEDG参数
- oracle转postgreSQL修改点
- 重学数据结构(三、队列)
- Jmeter系列(68)- BeanShell 内置变量 prev
- 聊聊java中的哪些Map:(六)ConcurrentHashMap源码分析