Bug FreeMemory PB5.70Beta3 [Resolu]

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Bug FreeMemory PB5.70Beta3 [Resolu]

Message par Thyphoon »

Salut les enfants !

Avant de poster ça sur le forum anglais.. est ce que c'est moi le problème, ou bien il y a bien un bug avec PB5.70 Beta 3 j'ai un plantage sur le FreeMemory...

Code : Tout sélectionner

FileName.s="Coucou les enfants"
*Mem=AllocateMemory(MemoryStringLength(@FileName)+2)
Debug MemorySize(*Mem)
PokeS(*Mem,FileName)
Debug PeekS(*Mem)
FreeMemory(*Mem)
Merci d'avance :P
Dernière modification par Thyphoon le mer. 05/déc./2018 20:14, modifié 2 fois.
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Bug Allocatememory PB3.70Beta 3

Message par MLD »

Salut Thyphoon
Peut-être avec 3.70 beta3 ?, mais pas avec la 5.62 :oops:
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Bug Allocatememory PB3.70Beta 3

Message par boby »

@Thyphoon la 5.70 beta tu veux dire ? m'enfin, ça ne viens pas de la beta non.

Code : Tout sélectionner

FileName.s="Coucou les enfants"
*Mem=AllocateMemory(SizeOf(string))
Debug MemorySize(*Mem)
PokeS(*Mem,FileName)
Debug PeekS(*Mem)
Delay(1)
FreeMemory(*Mem)
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Bug Allocatememory PB3.70Beta 3

Message par Thyphoon »

MLD a écrit :Salut Thyphoon
Peut-être avec 3.70 beta3 ?, mais pas avec la 5.62 :oops:
zut 5.70Beta lolllll je corrige :P
sur la 5.62 tu n'as pas de souci ?
boby a écrit :@Thyphoon la 5.70 beta tu veux dire ? m'enfin, ça ne viens pas de la beta non.

Code : Tout sélectionner

FileName.s="Coucou les enfants"
*Mem=AllocateMemory(SizeOf(string))
Debug MemorySize(*Mem)
PokeS(*Mem,FileName)
Debug PeekS(*Mem)
Delay(1)
FreeMemory(*Mem)
Heuuuuu... ça fonctionne mais c'est dangereux ta façon de faire SizeOf(String) = 4 Pour l'AllocateMemory ça fait un peu petit pour loger la chaîne de caractère :mrgreen:
Et Delay(1) effectivement empêche apparemment le plantage mais est-ce normal ?

Merci en tout cas pour les reponses :D
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Bug FreeMemory PB5.70Beta3

Message par boby »

@Thyphoon 2 Choses :
1) même soucis avec la 5.62

2) J'aurais au moins corrigé une erreur de ma part, en effet le sizeof(string) n'a pas lieu d'être utilisé dans un pointeur... C'était con de ma part.
En revanche si tu veux obtenir la taille en bytes d'une string, utilise la fonction StringByteLength()

Code : Tout sélectionner

FileName.s="Coucou les enfants"
*Mem=AllocateMemory(StringByteLength(FileName)+2)
Debug MemorySize(*Mem)
PokeS(*Mem,FileName)
Debug PeekS(*mem)
FreeMemory(*Mem)
Sizeof(String) sera à utiliser pour une string dans une structure... je me suis un peut embrouillé moi même.
Et Delay(1) effectivement empêche apparemment le plantage mais est-ce normal ?
En fait non, il ne sert à rien et masquait juste le soucis sans vraiment le coriger
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Bug FreeMemory PB5.70Beta3

Message par Thyphoon »

boby a écrit :@Thyphoon 2 Choses :
1) même soucis avec la 5.62
2) tu ne stock pas la chaine de caractère dans le pointeur *Mem quand tu PokeS, tu stock l'adresse mémoire qui va contenire ta chaine de caractère, il n'est donc pas nécèssaire de lui allouer plus de place qu'une integer... D'où le sizeof(string) (qui vaut 8 en x64)

Du coup n'ai pas peur, utilise sizeof(string) c'est fait pour ça ;)
Et Delay(1) effectivement empêche apparemment le plantage mais est-ce normal ?
En activant le purifier il semble que ce soit au pokeS qu'il y ai un problème, j'essaie de comprendre... Ne tiens pas compte de mon poste pour le moment.
Un grand merci pour le temps que tu passes... Je t'embrasse pas mais le coeur y est :P
Je me trompe peut être mais SizeOf(String) ça marche pour une variable de type String... alors que là c'est une allocation mémoire... Il faut donc utiliser la longeur de la chaine ce qui varie en fonction de l'encodage d'ou l'utilisation de ....heu...et là je te rejoins j'ai utilisé MemoryStringLength au lieu de StringByteLength...
code d'exemple dans la documentation

Code : Tout sélectionner

 Texte.s = "Salut !!!"

  *mem = AllocateMemory(StringByteLength(Texte) + SizeOf(CHARACTER))
  CopyMemory(@Texte, *mem, StringByteLength(Texte) + SizeOf(CHARACTER))
  Debug MemorySize(*mem)
  Debug PeekS(*mem)
  FreeMemory(*mem)

Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Bug FreeMemory PB5.70Beta3

Message par Thyphoon »

Donc pas de bug c'était bien moi :oops:
c'était une erreur de ma part MemoryStringLength au lieu de StringByteLength :oops: :oops: :oops:

là ça marche parfaitement :mrgreen:
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Bug FreeMemory PB5.70Beta3 [Resolu]

Message par boby »

Ouais... Pis moi comme un couillon j'en rajoute une couche en racontant nimporte quoi avant de réfléchire 5 minutes :p
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Bug FreeMemory PB5.70Beta3 [Resolu]

Message par Thyphoon »

boby a écrit :Ouais... Pis moi comme un couillon j'en rajoute une couche en racontant nimporte quoi avant de réfléchire 5 minutes :p
On va mettre ça sur le dos des journées d'hiver qui sont fatiguante :mrgreen:
Mais un grand merci tu m'as mis sur la piste :mrgreen:
Répondre