Comment lire / écrire les valeurs de type de la mémoire «brute» en C?

Comment puis-je faire quelque chose comme ce travail?

void *memory = malloc(1000); //allocate a pool of memory *(memory+10) = 1; //set an integer value at byte 10 int i = *(memory+10); //read an integer value from the 10th byte 

    Exemple simple: traitez la mémoire comme un tableau de caractères non signés

     void *memory = malloc(1000); //allocate a pool of memory uint8_t *ptr = memory+10; *ptr = 1 //set an integer value at byte 10 uint8_t i = *ptr; //read an integer value from the 10th byte 

    Vous pouvez également utiliser des nombres entiers, mais vous devez alors faire attention au nombre d’octets que vous définissez en une fois.

    Les règles sont simples:

    • chaque type de pointeur (à l’exception des pointeurs de fonction) peut être converti vers et à partir de void *, sans perte.
    • vous ne pouvez pas effectuer d’arithmétique de pointeur sur des pointeurs vides * et vous ne pouvez pas les déréférencer
    • sizeof (char) est égal à 1, par définition; donc incrémenter un pointeur de caractère signifie “append 1” à la valeur du pointeur “brut”

    Vous pouvez donc en conclure que si vous souhaitez effectuer une arithmétique “brute” du pointeur, vous devez effectuer un casting vers et depuis char *.

    Donc, par “travail”, je suppose que vous voulez dire “comment puis-je déréférencer / effectuer une arithmétique de pointeur sur un void* “? Vous ne pouvez pas; vous devez le lancer, en général sur un caractère char* si vous ne lisez que des morceaux de mémoire. Bien sûr, si c’est le cas, déclarez-le simplement comme un caractère char* pour commencer.