C'è qualche rischio quando si usano i char * per scrivere il codice cross platform che accede alla memoria?Eventuali insidie che utilizzano char * invece di void * durante la scrittura di codice multipiattaforma?
AGGIORNAMENTO: Ad esempio, dovrei controllare prima di trasmettere un char delegato ad un determinato tipo (ad esempio un int) se l'indirizzo è allineato alle dimensioni di quel tipo? Alcune architetture restituiranno strani risultati sull'accesso non allineato?
Sto lavorando a un allocatore di memoria di gioco per capire meglio come eseguire il debug dei problemi di memmory. Sono arrivato a credere che i char * siano preferibili a causa della capacità di fare aritmetica puntatore e dereferenziarli per il vuoto *, è vero? Le seguenti ipotesi si mantengono sempre vere su diverse piattaforme comuni?
sizeof(char) == 1
sizeof(char*) == sizeof(void*)
sizeof(char*) == sizeof(size_t)
A meno che non si stia definendo le istanze di 'char', è necessario eseguire il cast sia di' char * 'che di' void * 'per qualsiasi tipo puntino. – Aesthete
Non so se è "garantito" ma nella mia esperienza i primi 2 dovrebbero essere sicuri. L'ultimo...??. – vdbuilder