Page 1 sur 1
trop de dim() = invalid memory access !!!
Publié : lun. 04/sept./2006 19:22
par aneekee
voilà, j'utilise beaucoup les dimentions de tableau "dim()" lorsque je fais un programme.... mais là, il y a un problème avec purebasic... Apparement les données sont limités dans les tables qu'on en fasse 3 très grandes ou 20 petites.... au bout d'un moment on a droit à "invalid memory access" !!!!! alors qu'avec d'autres langages, cela ne pose aucun problème.....
quelqu'un aurait t-il une solution pour y remedier ?
Publié : lun. 04/sept./2006 20:36
par Anonyme
tu as un code?
Publié : lun. 04/sept./2006 21:44
par Backup
il a raison !!
Code : Tout sélectionner
CallDebugger
For t=0 To 10000
Dim t(500,500,500)
Next t
CallDebugger
End
trace ça au deuxiemme debugger cherche a faire afficher le contenu du tableau ,a l'aide du visualisateur de variable (afficher tous les elements) ----->"invalid memory access"
alors que ça (tableau a une dimension), ça marche
Code : Tout sélectionner
CallDebugger
For t=0 To 10000
Dim t(500)
Next t
CallDebugger
For t=0 To 10000
t.l(500)=20
Next t
CallDebugger
End
Publié : mar. 05/sept./2006 13:02
par Anonyme
Bah, chez moi pas , d'invalid access memory , je me suis basé sur ton code Dobro.
je vais regardez plus en détail, c'est un "bug?" intéressant
++
Publié : mar. 05/sept./2006 13:17
par Anonyme
Bon , il n'y a pas de bug.
Declare ton tableau en quad .q, ca passe
ps: la section rapport de bugs existe

Publié : mar. 05/sept./2006 14:07
par Backup
Cpl.Bator a écrit :Bon , il n'y a pas de bug.
Declare ton tableau en quad .q, ca passe
non ! non ! cela n'a rien a voir !!
dans mon code il sagit de declarer 10000 tableau ayant 3 dimension de 0 a 500
ce qui tient dans un "long" commun , pas besoins des q !!!
dans ce code
Code : Tout sélectionner
CallDebugger
For t=0 To 10000
Dim t.l (500,500,500)
Next t
CallDebugger
End
en mode debugger actif !!
au deuxiemme calldebugger
tu vas dans bouton VARIABLE
onglet "Tableau"
tu choisi le tableau t(500,500,500)
click droit "afficher tous les éléments"
la tu as une invalid Memory access !!!!
alors que si tu ne cherche pas a voir le contenu du tableau , pas d'erreur de signalé !!
donc c'est bien un BUG

Publié : mar. 05/sept./2006 14:15
par Progi1984
Si il y a trois dimensions de 0à 500, alors cela fait un truc du genre Dim t.l (501,501,501)
Publié : mar. 05/sept./2006 14:17
par Anonyme
bon, il y a bien un bug...
j'ai une solution pour notre ami :
alors qu'avec d'autres langages, cela ne pose aucun problème.....
Expliquez moi l'interêt de déclarer 10000x le même tableau, je ne comprend pas.
Publié : mar. 05/sept./2006 14:30
par Backup
Progi1984 a écrit :Si il y a trois dimensions de 0à 500, alors cela fait un truc du genre Dim t.l (501,501,501)
ben non !!
car de 0 a 500 tu as deja 501 position
il aurai fallu ecrire Dim (499,499,499) pour suivre mon énoncé

Publié : mar. 05/sept./2006 14:46
par Progi1984
Ah oui, c'est l'inverse :S
Publié : mar. 05/sept./2006 21:10
par aneekee
merci de vos réponces, mais cela ne m'avance pas beaucoup...
la table dim (500,500,500) est énorme comparé à celles que j'utilise....
Publié : mar. 05/sept./2006 21:48
par comtois
comme toujours le mieux c'est de poster un code qui montre le problème.
Peut-être qu'on pourra t'orienter un peu plus en comprenant ce que tu cherches à faire.
Publié : mer. 06/sept./2006 7:17
par Dr. Dri
mon avis c'est que PB n'arrive pas à allouer la mémoire d'un si grand tableau, donc quand on essaye d'y accéder on a une erreur de pointeur nul...
Dri