[previous] 3230 [next] Address of automatic object assigned to local pointer with static storage duration.
Pointers REFERENCE - ISO:C90-6.1.2.4 Storage Durations of Objects

The address of a local automatic object is being assigned to a local pointer which has static storage duration. This is dangerous. When the local object goes out of scope, the value obtained by dereferencing this pointer will be undefined. Perhaps this object needs to be declared with static storage duration also?

For example:


/*PRQA S 2017,2211,3203,3223,3408,3447 ++*/

void f(void)
{
    static int* pi;
    int a;

    pi = &a;                           /* Message 3230 */
}


MISRA C:2012 Rules applicable to message 3230:

Rule-18.6  (Required) The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist


See also:

QA·C Source Code Analyser 8.1
MISRA C:2012 Compliance Module 1.0
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA C:2012 Rule Index Contents