Bonjour à tous,
Je suis en train de faire un programme de test d'une dll en C#.
Je me suis apercu que lorsque j'essaye de passer un tableau de structure, il y a une fuite de mémoire.
Vu depuis delphi, le tableau en question devient un PSafeArray, que je récupere et remet dans sa structure.
en C# :
en Delphi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 struct MaStructure { uint monElement1; uint monElement2; uint monElement3; uint monElement4; } public MaStructure[] GetMaStructure1(void); public void GetMaStructure2(out MaStructure[]); public void GetMaStructure3(ref MaStructure[]);
Que j'utilise l'une ou l'autre des trois méthodes j'ai une fuite de mémoire alors que si je les utilise avec un programme test en C# no problem.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var malocal : MaStructure; monPointeur : PSafeArray; begin monPointeur = GetMaStructure(); MaStructure = mPointeur.pvData;
Ais-je raison de penser que c'est bien du delphi que vient le probleme ?
Quelle est sensé être la bonne façon de s'y prendre ?
Le probleme vient je suppose du fait que le GC attend qu'une reference soit libiérée ou je ne sait quoi mais je met bien monPointeur:=nil; a la fin ...
Merci d'avance pour votre interet et votre aide !
Partager