Invalid pointer

An invalid pointer was dereferenced.

This diagnostic covers dereference of several kinds of invalid pointer values. Pointer values that are not based on a valid object are considered invalid. Such values can occur by taking the address of a local variable and using that address after its lifetime has ended or by typecasting a non-zero integer to pointer type. This diagnostic is also sometimes used when a pointer value is based on the address of a valid object, but the pointer computation yields a value outside the bounds of that object, for example "p = &x - 1; *p = 1;". Errors like that may also be reported as bounds violations instead.

ID

Observation

Description

1

Bad dereference

The place the bad pointer value was used

2

Memory write

The place the pointer value was created

Examples


#include <stdio.h>

int *p;

void f()
{
    int x = 1;
    // uses invalid value assigned to p in main
    printf("contents of address 100 is equal to %d\n", *p);
    p = &x;
}

int main(int argc, char **argv)
{
    p = (int *)100;
    f();
    // uses invalid value assigned to p in f
    printf("local variable x is equal to %d after call returns\n", *p);
}
        

Copyright © 2010, Intel Corporation. All rights reserved.