Kann mir jemand helfen, das Verhalten des Operators sizeof()
zu verstehen?Warum ist die Größe meiner Klasse größer als die Summe ihrer Mitglieder?
#include <iostream>
using namespace std;
class A{
int first;
double last;
public:
A(int a)
{
cout << a << endl;
}
};
int main()
{
A a(3);
cout << sizeof(a) << endl;
return 0;
}
Dieser Code druckt mir Größe von a als 16 Bytes. Die Größe der Klasse wird basierend auf ihren Mitgliedern berechnet. Also habe ich 4 Bytes (int
) + 8 Bytes (double
) = 12.
Also warum habe ich 16 Bytes bekommen?
Wenn ich int
und double
Mitglieder auskommentieren bekomme ich 1 Byte.
Wenn Sie Visual C++ verwenden, finden Sie https://msdn.microsoft.com/en-us/library/xh3e3fd0.aspx und versuchen, die '/ Zp1' Option, um den Ausgang 12 –
Nein zu machen, ich gewöhnlichen g ++ verwenden Compiler –
GCC ist so "normal" wie Visual C++ :) In jedem Fall bietet jeder C++ - Compiler ähnliche Optionen. Dieses Zeug ist inhärent implementierungsspezifisch. –