Visible to Intel only — GUID: GUID-8BD88AB3-F900-4707-8601-5470F379050D
Visible to Intel only — GUID: GUID-8BD88AB3-F900-4707-8601-5470F379050D
Memory Not Deallocated
Occurs when a block of memory is allocated, never deallocated, but still reachable at application exit (there is a pointer available to deallocate the block).
ID |
Code Location | Description |
---|---|---|
1 |
Allocation site |
Represents the location and associated call stack from which the memory block was allocated. |
Intel Inspector distinguishes among Memory leak, Memory not deallocated, and Memory growth problem types in the following manner:
Memory leak problems 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 deallocated problems 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 growth problems occur when a block of memory is allocated, but not deallocated, within a specific time segment during application execution. Severity level = (Warning).
C Example
static char *pStr = malloc(512); return;
Fortran Example
integer, allocatable, save, dimension(:) :: notdeallocatedptr(:) allocate(notdeallocatedptr(200))
Possible Correction Strategies
Use the appropriate deallocation function to return the memory block to the heap after its last use.
Platform |
Memory Allocator |
Memory Deallocator |
---|---|---|
C++ language |
new operator |
delete operator |
new[] operator |
delete[] operator |
|
C language |
malloc(), calloc(), or realloc()functions |
free() function |
Fortran language |
allocate() function |
deallocate() function |
Windows* API |
Windows* dynamic memory functions such as GlobalAlloc() or LocalAlloc() |
Appropriate functions, such as GlobalFree() or LocalFree() |