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>
#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.