mercredi 4 mars 2015

Comparing pointer values in if statement

Why this block throws memory error:



uint8_t buffer[ 8 ] = { 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 };

if ( *((uint32_t *)(&buffer[ 0 ])) == *((uint32_t *)(&buffer[ 3 ])) + 1 )
return TRUE;


While this block works:



uint8_t buffer[ 8 ] = { 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 };
uint32_t comp1 = *((uint32_t *)(&buffer[ 0 ]));
uint32_t comp2 = *((uint32_t *)(&buffer[ 3 ]));

if ( comp1 == comp2 + 1 )
return TRUE;

Aucun commentaire:

Enregistrer un commentaire