c++memorymemory-management

Arranging global/static objects sequentially in memory


In C++, is it possible to force the compiler to arrange a series of global or static objects in a sequential memory position? Or is this the default behavior? For example, if I write…

MyClass g_first (“first”);
MyClass g_second (“second”);
MyClass g_third (“third”);

… will these objects occupy a continuous chunk of memory, or is the compiler free to place them anywhere in the address space?


Solution

  • The compiler can do as it pleases when it comes to placing static objects in memory; if you want better control over how your globals are placed, you should consider writing a struct that encompasses all of them. That will guarantee that your objects will all be packed in a sequential and predictable order.