Примечание. Этот вопрос возник в контексте совместной памяти между программами на C ++ и C #.
В C ++ 11 меняет ли добавление члена static constexpr
что-либо с точки зрения отображения памяти?
Я бы интуитивно сказал, что член static constexpr
не занимает никакой памяти, но я полагаю, что я игнорирую какой-то очень фундаментальный аспект, такой как полиморфизм, например ...
Итак, в следующем примере гарантированно, что экземпляр Dummy и экземпляр Dummy2 занимают одинаковый объем памяти?
struct Dummy {
static constexpr std::size_t kSize = 512;
char data[kSize];
};
static constexpr std::size_t kSize2 = 512;
struct Dummy2 {
char data[kSize2];
};
В этом тесте эта теория не опровергнута, но я очень далек от того, чтобы сказать, что это гарантировано.
int main() {
std::cout << sizeof(Dummy) << " " << sizeof(Dummy2) << std::endl;
}
512 512