PROGRAMOWANIE I ALGORYTMY

Operator sizeof


powrót

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;
}

Out:

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;
}

Out:

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.