【发布时间】:2018-08-30 15:06:27
【问题描述】:
我在 C++ 中有以下结构
struct A {
int a;
double b;
float c;
}
这个结构和添加了函数的结构在内存布局上有区别吗?
struct B {
int a;
double b;
float c;
void foo();
}
B::foo() { //do stuff }
【问题讨论】:
-
简单到可以弄清楚:
printf("A: %zx, B: %zx\n", sizeof(struct A), sizeof(struct B)) -
XY 问题?为什么要了解内存布局?
-
@n.m.这很愚蠢。因为他有。
-
@n.m.我个人在嵌入式系统中工作,由于有限的内存和缓存优化,内存布局(特别是结构大小)可能非常重要,所以我认为这是一个合理的问题。 (是的,我使用 C++ 进行嵌入式)
-
@n.m.你知道这对于 C++ 来说完全是垃圾,因为它不像你所说的那样高级。我说您的评论很愚蠢的原因是因为我可以询问同一编译单元中的静态初始化顺序,这是最重要的了解,但似乎您的 XY 评论也将针对该问题。了解在这种语言中内存是如何布局的很重要。