Padding

The compiler sometimes needs to add extra bytes, padding, in our user-defined types. When we define data members in a class or struct, the compiler is forced to place the members in the same order as we define them. However, the compiler also has to ensure that data members inside the class have the correct alignment; hence, it needs to add padding between data members if necessary. For example, assume we have a class defined as follows:

class Document { 
  bool is_cached_{}; 
  double rank_{}; 
  int id_{}; 
};std::cout << sizeof(Document) << '\n'; // Possible output is 24 

The reason for the possible output being 24 is that the compiler inserts padding after bool and int to fulfill the alignment requirements of the individual data members ...

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.