当前位置: 首页 > news >正文

从实践出发--探究C/C++空类的大小,真的是1吗?

文章目录

    • 测试代码
    • VS2022
      • 正常运行
      • 编译失败
    • GCC
  • 总结

Author: NemaleSu

Data: 2025/07/21

测试环境:

  • Win11:VS2022
  • Ubuntu22.04:gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

相信众多cpper听过太多书籍、视频、文档、博客等资料,说C/C++里空类大小为1,那么真的是这样吗?

笔者我本着纸上得来终觉浅的道理,今天将实机验证一遍,看看这个说法是否正确

注意!!!

注意看文件的后缀,区分C/C++文件

测试代码

注意:为了保证C/C++均可编译,因此代码统一使用:

#include <stdio.h>struct Data
{};int main()
{struct Data data;printf("data size: %d\n", sizeof data);return 0;
}

VS2022

msvc-stdc++14

正常运行

编译失败

GCC

总结

  • 在VC环境下,从VS2017开始
    • C语言是不允许定义空类的,因此会报错
    • C++允许空类,大小为1
  • 在Gcc环境下
    • C语言可以定义空类,大小为0
    • C++可以定义空类,大小为1
http://www.dtcms.com/a/290330.html

相关文章:

  • 西门子 S7-1500 信号模块硬件配置全解析:从选型到实战
  • 如何快速比较excel两列,拿出不同的数据
  • 在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型
  • 用 STM32 的 SYSTICK 定时器与端口复用重映射玩转嵌入式开发
  • 大模型高效适配:软提示调优 Prompt Tuning
  • The Survey of Few-shot Prompt Learning on Graph
  • AI Agent开发学习系列 - langchain之LCEL(3):Prompt+LLM
  • JavaScript Promise全解析
  • Prompt Engineering(提示词工程)基础了解
  • 【PTA数据结构 | C语言版】列出连通集
  • 归并排序:优雅的分治排序算法(C语言实现)
  • 什么是商业智能BI数据分析的指标爆炸?
  • Leetcode 3624. Number of Integers With Popcount-Depth Equal to K II
  • nerf-2020
  • Python 列表操作—基础和进阶技巧
  • spring简单项目实战
  • H3C技术考核
  • ACE 插入元件
  • SQL审计、Archery实战记录
  • 深入解析Hadoop YARN:三层调度模型与资源管理机制
  • [Python]函数调用链中局部变量的内存影响:通过memory_profiler分析
  • AR巡检和传统巡检的区别
  • 在 Angular 应用程序中使用 Genkit 的完整指南
  • 基于ArcFace损失函数训练的人脸特征提取模型
  • IDEA 同时修改某个区域内所有相同变量名
  • AR技术:应急响应的加速利器
  • AR技术:石化行业培训的“游戏规则改变者”
  • Swap Face 使用遇到的问题
  • 识别PDF中的二维码
  • ASP.NET Core Web API 中集成 DeveloperSharp.RabbitMQ