假设我有一个C/C++结构只有“double”元素的结构是否有填充?
struct ABCTYPE
{
double A;
double B;
double C;
};
是否保证有任何形式的现代平台没有微胖?
更具体地讲,如果我用
std::vector<ABCTYPE> storage;
// add some elements
// now i need some C routines to the data
double* param=&(storage[0]);
c_routine(param); // Tested OK on Win/Linux, but will it work on any platforms?
是的。但我想知道如果我使用纯双重会发生什么。在我看来,double不应该填充,因为它有8个字节,64位,并且对于32位和64位乃至128位系统都有完美的对齐。 – xis
没关系。作为一个编译器编写者,我可以实现C++,如果我愿意的话,所有的类/结构体都会使用无用的内存填充结构体。 –