So che è stato eseguito un hash per un certo numero di volte, ma oggi mi sono imbattuto in un caso che ha sciolto la mia comprensione dell'indice matematico/indice del puntatore.Indice matematico puntatore vs. matrice
Come ho sempre capito, & mybuff [10] e (& mybuff + 10) sono modi equivalenti di referenziamento della stessa memoria.
Comunque ho passato la mattina a combattere un caso in cui:
memcpy(&mybuff+10,&in,8);
overflow del buffer, quando viene compilato con l'ottimizzazione on e ha lavorato bene quando compilato per il debug.
Mentre athe stesso tempo,
memcpy(&mybuff[10],&in,8);
lavorato bene in entrambi i casi.
Mille grazie per qualsiasi idea o suggerimento.
tee hee al gioco di parole per chiedere "puntatori" – Daniel
[Alcuni puntatori] (http://xkcd.com/138/). – mopsled
'& mybuff [10]' restituisce 'e (* (mybuff + 10))', che è diverso da '& mybuff + 10'. Ricorda che gli operatori postfissi come '[]' hanno una precedenza più alta rispetto agli operatori unari come '&'. –