Memory Growth
Occurs when a block of memory is allocated but not deallocated within a specific time segment during application execution.



ID |
Code Location | Description |
---|---|---|
1 | Start site | Represents a point in time. |
2 | Allocation site | Represents the location and associated call stack of a memory block allocated but not deallocated between the start site and end site. There may be no, one, or many allocation site code locations in a Memory growth problem. |
3 | End site | Represents a point in time. |
Intel Inspector
distinguishes among
Memory leak
,
Memory not deallocated
, and
Memory growth
problem types in the following manner:
- Memory leakproblems occur when a block of memory is allocated, never deallocated, and not reachable (there is no pointer available to deallocate the block). Severity level =
(
Error). - Memory not deallocatedproblems occur when a block of memory is allocated, never deallocated, but still reachable at application exit (there is a pointer available to deallocate the block). Severity level =
(
Warning). - Memory growthproblems occur when a block of memory is allocated, but not deallocated, within a specific time segment during application execution. Severity level =
(
Warning).
Example
void ProcessTransaction(TransactionContext x) { ... char* m = (char*) malloc(128); ... return; } void WaitForTransactions() { ... for (;;) { TransactionContext x = WaitForTransaction(); // Report end site ProcessTransaction(x); } }
In this example, if the user clicks the
Reset Growth Tracking
button, performs the transaction, and then clicks the Measure Growth
button, the Intel Inspector
reports a single allocation of 128 bytes within ProcessTransaction
. Possible Correction Strategies
Identify the leaked memory blocks that should have been freed and call the appropriate free routine during the lifetime of the transaction.
Intel Inspector
does not perform a reachability
analysis. Some of the reported memory blocks may:- Be already unreachable
- Become unreachable later
- Be deallocated later
- Be still allocated but reachable when analysis ends