Intel® Inspector User Guide for Linux* OS

ID 767796
Date 5/15/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Uninitialized Memory Access

Occurs when a read of an uninitialized memory location is reported.

Problem type: Uninitialized memory access

ID

Code Location

Description

1

Allocation site

If present, represents the location and associated call stack from which the memory block containing the offending address was allocated.

2

Read

Represents the instruction and associated call stack responsible for the uninitialized access.

If no allocation is associated with this problem, the memory address might be in uninitialized stack space.

NOTE:

The offset, if shown in the Code Locations pane, represents the byte offset into the allocated buffer where the Uninitialized memory access occurred.

C Examples

Heap example:

char* pStr = (char*) malloc(20);
char c = pStr[0]; // the contents of pStr were not initialized

Stack example (set Analyze stack accesses to Yes when you configure the analysis):

void func()
{
   int a;
   int b = a * 4; // read of uninitialized variable a
}
Fortran Examples

Heap example:

integer, allocatable :: a(:)
integer :: b
    
allocate( a(10) )
b = a(1) * 4

Stack example (set Analyze stack accesses to Yes when you configure the analysis):

integer :: a, b
    
b = a * 4

NOTE:
Buffers created by system calls linking processes to shared memory are flagged as allocated memory, which means the Intel Inspector does not report an Uninitialized memory access on these buffers.

Possible Correction Strategies

Initialize the offending memory prior to use.