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>
#include<cstdlib>
using namespace std;

int main()
{
	int a;
	
	cout<<"Typ int zajmuje "<<sizeof(int)<<"b\n";
	cout<<"Można też sprawdzić podając nazwę zmiennej "<<sizeof(a)<<"b\n";
	
	int tab[1000];
	cout<<"Ta tablica zajmuje "<<sizeof(tab)<<"b\n";
	
	system("pause");
	return 0;
}
 

 

Out:

Typ int zajmuje 4b
Można też sprawdzić podając nazwę zmiennej 4b
Ta tablica zajmuje 4000b
Aby kontynuować, naciśnij dowolny klawisz . . .

 

 Możemy sprawdzić wielkość obiektów strukturalnych i klas:

#include<iostream>
#include<cstdlib>
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)<<"b\n";
	cout<<"Powyższa klasa zajmuje "<<sizeof(twoja)<<"b\n";
	
	system("pause");
	return 0;
}
 

 

Out: 

Powyższa struktura zajmuje 108b
Powyższa klasa zajmuje 8b
Aby kontynuować, naciśnij dowolny klawisz . . .

 

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.