J'ai créé un Trie pour stocker quelques millions de mots.Sérialiser un trie
typedef struct trie
{
struct trie* c[38];
unsigned int occ;
} trie_t;
occ est juste un nombre qui stocke le nombre d'occurrences des mots. Si 0: le noeud n'est pas un mot. c [38] est pour: 26 lettres + 10 nombre + '_' + '.'
Je veux le sérialiser pour que je puisse le réintégrer en mémoire sans avoir à le construire à chaque fois. Le problème est que j'ai utilisé malloc pour créer le Trie donc toute la mémoire n'est pas contiguë. Je voudrais forcer la mémoire dans laquelle le Trie est créé pour être contigu afin que je puisse remplacer les pointeurs par offset et sérialiser la structure entière.
Est-ce la bonne solution? Est-ce encore possible avec malloc ou dois-je construire mon propre allocateur de mémoire pour le faire?
Donc, est-ce statique une fois construit - vous ne le mettez pas à jour? –
oui. Pas de mise à jour. Le Trie est créé à partir d'une liste de mots qui ne changera jamais. – IggY
Ensuite, il suffit de le construire. Comprenez que vous allez probablement "plier" certaines règles C et que vous devrez compter sur un "comportement non documenté" redouté pour faire l'adressage, mais pas de problème. –