J'ai besoin d'aide pour réfléchir à une tâche.Mémoire et pointeurs
Ma tâche est de créer une zone de mémoire
void *memory = malloc(320);
puis utiliser des pointeurs pour stocker des textes dans ce lieu de stockage: Nous voulons diviser cette zone en blocs de données de 32 octets, semons, nous pouvons stocker: 320/32 = 10 blocs de données a 32 octets. Dans un bloc de données, je peux stocker (1 caractère ASCSII = 1 octet) 32 caractères.
J'ai un bitmap qui est 10 long où chaque bit indique si le bloc de données est utilisé (1) ou non (0).
Mais que se passe-t-il si je veux stocker un texte de 60 caractères? Ensuite j'ai besoin de 2 blocs de données (2 x 32 octets). Le bitmap montre que les blocs de données 2 et 6 sont libres, 1 et 6 n'est pas côte à côte. Comment puis-je atteindre cet objectif?
struct data {
char * text;
};
typedef struct data d;
d->text = ???
S'il n'y a pas deux blocs libres adjacents, vous ne pouvez pas satisfaire la requête d'une chaîne de 60 octets. Vous venez de découvrir la "fragmentation de la mémoire": http://en.wikipedia.org/wiki/Memory_fragmentation –
Ainsi, vos seules options seraient de défragmenter (ce qui oblige les gens à ne pas conserver les pointeurs), ou d'allouer plus de mémoire. – EboMike
ou pour créer des chaînes – pm100