W sytuacji, gdy nie jesteśmy pewni ile pamięci zajmuje typ wbudowany w strukturę C++ lub typ stworzony przez użytkownika (struktura, klasa), możemy skorzystać z operatora sizeof. Wyraz ten jest słowem kluczowym w C++, a więc nie może być używany jako nazwa zmiennych.
Prześledźmy kilka przykładów.
Sprawdźmy, ile pamięci zajmują podstawowe typy zmiennych w moim kompilatorze:
#include<iostream>
using namespace std;
int main()
{
int a;
cout<<"Typ int zajmuje "<<sizeof(int)<<" bajty\n";
cout<<"Można też sprawdzić podając nazwę zmiennej: "<<sizeof(a)<<" bajty\n";
int tab[1000];
cout<<"Ta tablica zajmuje "<<sizeof(tab)<<" bajtów\n";
return 0;
}
Typ int zajmuje 4 bajty
Można też sprawdzić podając nazwę zmiennej: 4 bajty
Ta tablica zajmuje 4000 bajtów
Możemy sprawdzić wielkość obiektów strukturalnych i klas:
#include<iostream>
using namespace std;
struct struktura{
int x;
char tab[100];
bool b;
};
class klasa{
public:
int metoda(int x)
{
return x+x*x;
}
private:
int a, b;
};
int main()
{
struktura moja;
klasa twoja;
cout<<"Powyższa struktura zajmuje "<<sizeof(moja)<<" bajtów\n";
cout<<"Powyższa klasa zajmuje "<<sizeof(twoja)<<" bajtów\n";
return 0;
}
Powyższa struktura zajmuje 108 bajtów
Powyższa klasa zajmuje 8 bajtów
Operator staje się przydatny w sytuacjach, w których należy przydzielić pamięć dynamicznie za pomocą funkcji, w których wymagane jest podanie wielkości obiektu.