MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012Conversion performed from a pointer to void to a pointer to an object.
MISRA C 2012 Rule 11.5: A conversion should not be performed from pointer to void into pointer to objectC90 [Undefined 20], C99 [Undefined 22, 34] Category: Advisory Analysis: Decidable, Single Translation Unit Applies to: C90, C99 RationaleConversion of a pointer to void into a pointer to object may result in a pointer that is not correctly aligned, resulting in undefined behaviour. It should be avoided where possible but may be necessary, for example when dealing with memory allocation functions. If conversion from a pointer to object into a pointer to void is used, care should be taken to ensure that any pointers produced do not give rise to the undefined behaviour discussed under Rule 11.3. ExceptionA null pointer constant that has type pointer to void may be converted into pointer to object. Exampleuint32_t *p32; void *p; uint16_t *p16; p = p32; /* Compliant - pointer to uint32_t into * pointer to void */ p16 = p; /* Non-compliant */ p = ( void * ) p16; /* Compliant */ p32 = ( uint32_t * ) p; /* Non-compliant */ |