Code : Tout sélectionner
Procedure SendMessage(ClientID,type, Message$)
*buffer2 = AllocateMemory(4+Len(Message$))
PrintN("Message serveur : " + Message$ + " pour " + Str(ClientID))
PokeL(*Buffer2,type)
PokeS(*Buffer2+4,Message$)
SendNetworkData(ClientID,*Buffer2,MemorySize(*Buffer2))
EndProcedure
Cette procédure plante régulièrement : error read memory
Elle plante moins avec le freememory supprimé à la fin de celle-ci mais cela plante encore.
Je pense que la procédure va plus vite que la mémoire. Je m'explique :
J'envoie des message en rafale, donc la procédure est appelée à un rythme soutenue. Serait- il possible que cela plante car la mémoire n sait pas vider assez vite.
Je commence à péter un câble xD
Donc dans ce cas serrait-il plus judicieux de faire un global *Buffer alloué une seule fois au début du programme. et de le remplir d'un caractère quelconque. Le seul soucis c'est que cela me contraint à envoyer des gros *buffer même pour un message de deux lettres xD
Un petit log sur les erreurs clients avec allocate comme pour le serveur xD
Code : Tout sélectionner
[11:23:58] Waiting for executable to start...
[11:23:58] Executable type: Windows - x86 (32bit)
[11:23:58] Executable started.
[11:24:35] [ERROR] Line: 411
[11:24:35] [ERROR] Can't allocate a memory block of size 0.
[11:24:45] The Program was killed.
[11:24:46] Waiting for executable to start...
[11:24:46] Executable type: Windows - x86 (32bit)
[11:24:46] Executable started.
[11:26:08] [ERROR] Line: 222
[11:26:08] [ERROR] Invalid memory access. (read error at address 0)