C++ 硬核知识点: 数据段/代码段/内存分配/虚函数/继承/多态

  1. 结构体struct和类class占用内存大小解析

今天面试遇到一个比较有意思的问题, 这里安排一下
空结构体和空类占内存大小是多少?

答案:
1. C++指定空结构体和空类所占内存大小为1,
2. C 的空类和空结构体大小为0

为何c++会有这样的规定呢?

no object shall have the same address in memory as any other variable
如果允许C++对象大小为0, 那么这里的运算将产生两个问题:

不能通过指针区分不同的数组对象,
sizeof(S1)为0, 导致非法除零操作
这样一来就需要更复杂的代码处理异常

示例代码

include

Original: https://www.cnblogs.com/wanghuaijun/p/16215660.html
Author: 专注it
Title: C++ 硬核知识点: 数据段/代码段/内存分配/虚函数/继承/多态

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535346/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • C++ 使用静态链接库和动态链接库

    C++ 使用AdbHelper静态链接库 ## 必备文件:静态库AdbHelper.h,AdbHelper.lib以及动态库AdbHelper.dll ##   资源文件使用用法:…

    C++ 2023年5月29日
    051
  • C++基础 (杂七杂八的汇总 )

    各数据类型在32位系统和64位系统占的字节数: C类型 32 64 char 1 1 short int 2 2 int 4 4 long int 4 8 long long in…

    C++ 2023年5月29日
    062
  • dev c++ 无法单步调试

    遇到cout语句中有endl时,点击下一步无反应,需将endl改为’\n’ 或直接添加 #define endl ‘\n’ 替换qt…

    C++ 2023年5月29日
    050
  • [图形图像]C++实现的软件光栅器

    第1张: 从坐到右,从上到下。无纹理、无镜面光、无深度缓冲,依次是: 线框。 纯色。 即每个三角形一个颜色。 flat着色(相比上次,修正后的效果好多了)。也是每个三角形一个颜色,…

    C++ 2023年5月29日
    065
  • 聊聊 C++ 右值引用 和 移动构造函数

    一: 背景 最近在看 C++ 的右值引用和移动构造函数,感觉这东西一时半会还挺难理解的,可能是没踩过这方面的坑,所以没有那么大的深有体会,不管怎么说,这一篇我试着聊一下。 二: 右…

    C++ 2023年5月29日
    053
  • 347. 前 K 个高频元素 (优先队列 c++)

    【C++】优先队列的预备知识 对于我这种初学者来说,一个优先队列就给我搞蒙了,在此记录一下,造福后来人 定义 priority_queue<type, container, …

    C++ 2023年5月29日
    052
  • 【转】C++知识点总结

    其他路径: 微信公众号:程序喵星人 更多资源和视频教程,QQ:1902686547 这篇文章是对C++的知识点做了一些简单的总结,基本包含了所有的C++基础知识点。以下提到的知识点…

    C++ 2023年5月29日
    052
  • 拓扑排序(二)之 C++详解

    拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说,可能理解…

    C++ 2023年5月29日
    044
  • C++案例——协助破案

    协助破案。假设已经查清,有 A、B、C、D、E 五个嫌疑人可能参与制造了一起抢劫银行案,但不知道其中哪几个是真正的案犯。不过,有确凿证据表明: 上述论断可以用数理逻辑中的正规表达式…

    C++ 2023年5月29日
    044
  • c++ win32 遍历进程列表

    使用 CreateToolhelp32Snapshot #include #include #include #include int main() { HANDLE hSnap …

    C++ 2023年5月29日
    064
  • c和c++开发工具之clion和vs

    个人体验结果 如果是CMake或者要跨平台的话,建议使用CLion 像我在看书写练习题的话,Clion使用cmake编译c/c++源码更简单上手使用。 如果项目不大,两者都可以。如…

    C++ 2023年5月29日
    0120
  • 国外程序员整理的C++资源大全

    C++标准库,包括了STL容器,算法和函数等。 C++通用框架和库 Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合 ASL …

    C++ 2023年5月29日
    061
  • C++ 总结

    1、迭代器并不是都可以进行加减 迭代器实质上是一个指针,但是,并不是所有的容器的迭代器可以支持加减操作。 能进行算术运算的迭代器只有随机访问迭代器,要求容器元素存储在连续内存空间内…

    C++ 2023年5月29日
    065
  • c++ 智能指针的向下转换 向下塑型 cast

    class A { public: void test() { std::cout << "test" << std::endl; } …

    C++ 2023年5月29日
    068
  • 关于C++单件模式释放对象

    最近接触的一个项目要用到单件模式,我像往常一样哒哒(敲击键盘ing)一个单件模式的典型结构很快就出现在我的面前: 不知道为什么,这次突然觉得new这个单词太耀眼了,熟悉c++的程序…

    C++ 2023年5月29日
    040
  • (筆記) 常用設定暫存器值的編程技巧 (SOC) (C/C++) (C) (Verilog)

    Abstract設定暫存器值是寫firmware時最常見的控制,本文歸納出C語言在寫firmware時常見的編程技巧,並與Verilog相互對照。 Introduction本文將討…

    C++ 2023年5月29日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球