accés violation de la mémoire - Delphi/Pascal - Programmation
MarshPosté le 30-01-2008 à 11:27:14
bonjour tout le monde. je suis entrain de programmer une application de facturation d'appel VOIP en delphi 7 . j'affiche le premier appel , (voir le deuxiéme ) mais au troisième appel je reçois une exeption du genre :"le projet callfact a généré une classe d'exeption EAcess Violation avec le message violation d'accés en mémoire 00402905 dans le module callfact.exe écriture de l'adresse 00404801. processus stoppé" j'ai déjà essayé tout mon possible j'ai d'abord cru que c'était un problème d'accés concurrent de 2 appels en mémoire et j'ai essayé de gérer la section critique.
var GLock : TCriticalSection; initialization GLock := TCriticalSection.Create; finalization GLock.Free; jusquelà mon problème n'est pas resolu . ce que j'ai envi de faire maintenant c'est de liberer le buffer à chaque fois que je reçois un nouveau appel ou à chaque fois qu'un appel se termine . comment faire celà ?
j'ai alloué une mémoire pour stocker maximum 2048 caractéres du genre ABuffer=Array[1...2048] of char ; pour stocker tous les messages d'un appel. j'aimerai desallouer cet espace mémoire à chaque fois qu'un appel se termine pour enregistrer le prochain appel. je compte sur votre réaction pour avancer.
Marsh Posté le 30-01-2008 à 11:27:14
bonjour tout le monde. je suis entrain de programmer une application de facturation d'appel VOIP en delphi 7 . j'affiche le premier appel , (voir le deuxiéme ) mais au troisième appel je reçois une exeption du genre :"le projet callfact a généré une classe d'exeption EAcess Violation avec le message violation d'accés en mémoire 00402905 dans le module callfact.exe écriture de l'adresse 00404801. processus stoppé" j'ai déjà essayé tout mon possible j'ai d'abord cru que c'était un problème d'accés concurrent de 2 appels en mémoire et j'ai essayé de gérer la section critique.
var
GLock : TCriticalSection;
initialization
GLock := TCriticalSection.Create;
finalization
GLock.Free;
jusquelà mon problème n'est pas resolu . ce que j'ai envi de faire maintenant c'est de liberer le buffer à chaque fois que je reçois un nouveau appel ou à chaque fois qu'un appel se termine . comment faire celà ?
j'ai alloué une mémoire pour stocker maximum 2048 caractéres du genre ABuffer=Array[1...2048] of char ; pour stocker tous les messages d'un appel. j'aimerai desallouer cet espace mémoire à chaque fois qu'un appel se termine pour enregistrer le prochain appel.
je compte sur votre réaction pour avancer.
merci