This topic describes the specifics of profiling Intel C++ and Borland C++ applications with the Allocation profiler. The topic includes the following sections:
The Allocation profiler traces calls to functions that allocate and de-allocate memory blocks and objects. In general, applications can use two function groups to allocate and de-allocate memory: they can use system memory management calls, or they can call on the runtime memory manager, which is part of the runtime library of Intel C++ and Borland C++. The runtime memory manager requests large blocks from the system, and then eventually releases them. After that, it works on its own with a lot of memory-allocation calls from the application. This improves speed, and most importantly, allows you to avoid system memory thrashing (frequent allocation and de-allocation of small blocks).
The Allocation profiler traces calls to the C++ memory manager’s functions and memory management functions provided by Windows API. For information on profiling system memory management functions, see Tracing System Memory Management Functions. The profiler traces calls to the following runtime memory management functions:
Creation and deletion of C++ classes located in Intel C++ and Borland C++ applications are traced as creation and deletion of memory blocks. That is, the profiler results do not include the names of leaked C++ classes; the leaked classes (if any) are reported under the C++ native memory class name (with a complete call stack for each leaked instance). See also Allocation Profiler - Results of the Objects Category.
In order to profile a Borland C++ or Intel C++ application with the Allocation profiler, you need to compile it with debug information. For a detailed description of how to configure the compiler, see the Compiler Settings for Borland C++ and Compiler Settings for Intel C++ topics.
To enable AQTime to profile the above-mentioned routines in your Intel C++ or Borland C++ application, you may need to add certain modules to the Setup panel in addition to your modules. This depends on the compiler options that were enabled when you compiled your application, specifically enabling the Debug configuration.