Forcer l'adresse mémoire dun élément d'une liste

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Forcer l'adresse mémoire dun élément d'une liste

Message par microdevweb »

Bonjour,

Voila ma question, est-il possible de forcer l'adresse mémoire d'un élément d'une liste. Pourquoi? Imaginons que l'on mémorise, l'adresse mémoire (*id=@maListe()) d'un élément d'une liste en travaille interne. L’utilisateur sauve son travaille (via json ou autres) quant il recharge le fichier de sauvegarde, évidement les adresses ont changées. Est-il possible de forcer Pb à reprendre les mêmes adresses? Perso je ne penses pas
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par G-Rom »

Non. utilise des index.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par Mesa »

Même si c'est probablement possible à coup d'allocatememory et de Poke, je trouve que c'est néanmoins beaucoup de travail et surtout beaucoup de risque d'erreur mémoire et donc de plantage de PC (carrément) pour un faible gain. Ça me rappelle l'époque du DOS ou de Windows 3.11 avec ses plantages et redémarrage d'ordi toutes les "10 minutes".

Il est préférable de faire confiance au système d'exploitation qui va gérer ça bien mieux que le meilleurs des programmeurs.
L'OS saura quoi faire en fonction du contexte: utiliser le disque dur, la mémoire ram, voir les registres du processeurs, ... (heap = tas, pile, mémoire cache, etc.).

M.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par microdevweb »

@G-Rom, la solution des index a un problème. Si on supprime un élément (du milieu par exemple) on perds les index. Une map, je penses, mais comme je n'ai pas envie de tous refaire je vais bidouiller quelque chose.

@Mesa, je m'en doutais.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par G-Rom »

Tu réindexe tes éléments au moment de la suppression ?
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par Marc56 »

Je ne sais pas comment PB gère les adresses mémoire, mais si c'est une adresse absolue, il n'y a aucune chance de pourvoir réutiliser la même au prochain lancement étant donné que d'autres programmes sont lancés et fermés sans arrêt dans un OS.
Vouloir forcer l'écriture à une adresse ancienne précise va au mieux être rejetée par le noyaux, au pire planter tout.

Si le but est d'utiliser les éléments d'une liste en direct, le mieux est d'utiliser les listes indexées ou les tables de hachage. Les listes liées sont conçues pour êtres utilisées comme des piles de feuilles de papier.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par G-Rom »

Ou si vraiment tu tiens a faire comme cela, créer toi un pool de mémoire et stocke les offsets de tes éléments , mais là, cela deviens du brain fuck ^^
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par Fig »

PB ne gère pas lui-même l'allocation mémoire, il demande au système d'exploitation une adresse libre pour un nouvel élément...

Ceci dit, je ne vois pas où est le problème, au moment où tu sauvegarde tes pointeurs mémoires, tu les transforme en index (puisqu'au moment où tu sauvegarde tu n'as plus d'opération à faire sur les listes: suppression, ajouts etc...)
Et quand tu recharge tes index, tu les transforme alors dans les nouvelles adresses.

C'est très simple, il me semble...
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Forcer l'adresse mémoire dun élément d'une liste

Message par microdevweb »

Merci Fig,

C'est un peux le système pour le quel j'ai opté, après le chargement (fichier json) je lance une procédure qui réaffecte les pointeurs.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre