Page 1 sur 1

Bug FreeMemory PB5.70Beta3 [Resolu]

Publié : mer. 05/déc./2018 16:35
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

Re: Bug Allocatememory PB3.70Beta 3

Publié : mer. 05/déc./2018 17:17
par MLD
Salut Thyphoon
Peut-être avec 3.70 beta3 ?, mais pas avec la 5.62 :oops:

Re: Bug Allocatememory PB3.70Beta 3

Publié : mer. 05/déc./2018 17:28
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)

Re: Bug Allocatememory PB3.70Beta 3

Publié : mer. 05/déc./2018 18:18
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

Re: Bug FreeMemory PB5.70Beta3

Publié : mer. 05/déc./2018 19:39
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

Re: Bug FreeMemory PB5.70Beta3

Publié : mer. 05/déc./2018 20:00
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)


Re: Bug FreeMemory PB5.70Beta3

Publié : mer. 05/déc./2018 20:14
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:

Re: Bug FreeMemory PB5.70Beta3 [Resolu]

Publié : mer. 05/déc./2018 20:27
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

Re: Bug FreeMemory PB5.70Beta3 [Resolu]

Publié : mer. 05/déc./2018 20:40
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: