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

从实践出发--探究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.xdnf.cn/news/16100.html

相关文章:

  • 微店关键词搜索接口深度开发指南
  • 有关Maven的个人笔记总结
  • ssh2-sftp-client 简化 sftp 文件传输的 node库
  • python实现接收九数云的异常分析指标推送通知
  • C++基础数据结构
  • Java IO 流详解:从基础到实战,彻底掌握输入输出编程
  • A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析
  • 牛客网题解 | 单词识别
  • 关于Ajax的学习笔记
  • 二叉树实现堆,咕咕咕
  • 结构型模式-架构解耦与扩展实践
  • Linux的目录
  • stream event
  • 软文发布平台推荐指南,软文发稿平台该怎么选?
  • 网络协议(三)网络层 IPv4、CIDR(使用子网掩码进行网络划分)、NAT在私网划分中的应用
  • Axios
  • Qt中的网络通信
  • javaSE(从0开始)day13
  • 通过TPLink路由器进行用户行为审计实战
  • 【图像处理基石】什么是相机的内外参数?
  • springcloud -- 微服务02
  • 关于 URL 中 “+“ 号变成空格的问题
  • 数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用哈希表
  • HTTP性能优化实战技术详解(2025)
  • Linux进程核心机制:状态、优先级与上下文切换详解
  • Redis进阶--缓存
  • AQS 抽象队列同步器 资源竞争-排队等待
  • C++实战案例:从static成员到线程安全的单例模式
  • Django视图与路由系统
  • Elasticsearch、Solr 与 OpenSearch 搜索引擎方案对比分析及选型建议