J'appelle un morceau d'un code C++ non géré de mon application C# pour calculer la transformée de Fourier rapide d'un signal temporel discret.Libération de code non géré en C#
Je fais quelque chose d'appel comme celui-ci
IntPtr ptr = ComputeFFTW(packetSig, packetSig.Length, (int)samplFrequency,(int)fftPoints);
unsafe
{
double *dPtr = (double*)ptr;
for(int l = 0; l < fftData.Length; l++)
{
fftData[l] = dPtr[l];
}
}
Bien que ce bout de code fonctionne très bien et me donne les résultats escomptés, je peux voir qu'il y est une sorte de coup de performance (fuite de mémoire) est engagée alors que le calcul est en cours. Le CLR ne parvient pas à récupérer les variables locales (doubles) et mon application engloutit considérablement l'espace RAM. Est-ce que quelqu'un d'entre vous peut suggérer les endroits où je pourrais me tromper.? De mon côté, j'ai couru mon application utilisant ANTS Mem Profiler et je peux voir sur l'instantané que les objets doubles réclament presque> 150MB de l'espace de mem. Est-ce un comportement normal ??
Class Name Live Size (bytes) Live Instances
Double[] 150,994,980 3
Toute aide est appréciée à cet égard Srivatsa
Merci Alex.Ceci m'a aidé à résoudre un peu. Je pense que je devrai déboguer du côté C++ pour vérifier ce qui se passe de ce côté du code. –