Bonjour,
je travail actuellement sur un programme DOS qui doit faire une allocation dynamique de la memoire de plus de 64ko donc j'utilise des far pointer
tout marche tres bien pour la réservation et la libération de la mémoire.
le probleme survient quand je reserve "beaucoup" de memoire et que je tente une lecture apres les octets 65535 (taille max encoder en 16bit).
par exemple (code bidon mais illustrant bien mon probleme)
le probleme vient de l'instruction pt[i] qui me renvoie la bonne valeur jusqu'a i = 65535 mais qui apres reboucle au debut de la memoire, c'est a dire par exemple que si i prends les valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 unsigned long int Size = 307200 ; unsigned long int i = 0; unsigned char far * pt = farmalloc(Size); while(i<Size) { MaFonction(pt[i]); i++; } farfree(pt);
- 65536 alors pt[i] pointe en faites vers pt[0]!!!!
- 65537 alors pt[i] pointe en faites vers pt[1]!!!!
- 65538 alors pt[i] pointe en faites vers pt[2]!!!!
.....
-131072 alors pt[i] pointe en faites vers pt[0]!!!!
-131072 alors pt[i] pointe en faites vers pt[1]!!!!
-131072 alors pt[i] pointe en faites vers pt[3]!!!!
......
Voila j'espere avoir ete assez claire
Merci de votre attention![]()
Partager