Occurs when a block of memory is allocated, never deallocated, and not reachable (there is no pointer available to deallocate the block).

Problem type: Memory leak

ID

Code Location

Description

1

Allocation site

Represents the location and associated call stack from which the memory block was allocated.

Note

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 severity icon (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 severity icon (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 severity icon (Warning).

C Example

char *pStr = (char*) malloc(512);
return;

Fortran Example

function LEAK
integer, pointer, dimension(:) :: ptr
integer LEAK(100)
integer :: val

allocate(ptr(100))
allocate(ptr(100))
allocate(ptr(100))
ptr(2)=val
val=ptr(1)
LEAK = ptr

end function LEAK

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

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.