  In C++, an object can be allocated in static memory, on the stack, or on the
heap, where the latter is by the order of magnitude more expensive operation,
performance wise, than the first two. However, it is not clear how much overall
performance loss may be attributed to the use of on-heap objects in C++
applications. This study aims to fill this gap by analyzing object allocation
practices in open-source C++ code, investigating the frequency of stack and
heap allocations using real-time dynamic analysis with tools such as DynamoRIO
and Valgrind. We found out that the majority of objects (97.2%) are allocated
on the stack, with only a small portion (2.8%) allocated on the heap. However,
when considering the computational cost of each allocation method, we find that
heap allocations account for a substantial 85% of the total CPU cycles consumed
by object allocations. These findings underscore the importance of optimization
of on-heap object allocations, in C++ programming.
