trop de dim() = invalid memory access !!!

Programmation avancée de jeux en PureBasic
aneekee
Messages : 13
Inscription : lun. 04/sept./2006 14:13

trop de dim() = invalid memory access !!!

Message 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 ?
Anonyme

Message par Anonyme »

tu as un code?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

il a raison !! :D

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
Anonyme

Message 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 :wink:

++
Anonyme

Message par Anonyme »

Bon , il n'y a pas de bug.
Declare ton tableau en quad .q, ca passe :wink:

ps: la section rapport de bugs existe :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Cpl.Bator a écrit :Bon , il n'y a pas de bug.
Declare ton tableau en quad .q, ca passe :wink:
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 :D
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Si il y a trois dimensions de 0à 500, alors cela fait un truc du genre Dim t.l (501,501,501)
Anonyme

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :lol:

il aurai fallu ecrire Dim (499,499,499) pour suivre mon énoncé :lol:
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Ah oui, c'est l'inverse :S
aneekee
Messages : 13
Inscription : lun. 04/sept./2006 14:13

Message 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....
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Répondre