大佬教程收集整理的这篇文章主要介绍了c – 编译器(G)似乎为它所需要的类的实例分配更多的内存,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class Class1 { public: int i; char ch; }; int main() { Class1 cls; }
使用“g -S”编译输出(除了功能定义,我已经删除了所有内容):
@H_550_2@main: push ebp mov ebp,esp sub esp,16 mov eax,0 leave ret我不明白线esp,16.为什么会为这个类的一个实例分配16个字节,当你考虑到data structure alignment and padding时只需要8个?
它应该是
[int i - 4 bytes][char ch - 1 byte][padding - 3 bytes]
应该没有
class Class1 { public: int i; char ch; double dub; };
它仍然分配16个字节,这在这种情况下是有道理的.
那么为什么编译器只需要8个分配16个字节呢?
以上是大佬教程为你收集整理的c – 编译器(G)似乎为它所需要的类的实例分配更多的内存全部内容,希望文章能够帮你解决c – 编译器(G)似乎为它所需要的类的实例分配更多的内存所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。