我從C#應用程序 中調用一段非託管C++代碼來計算離散時間信號的快速傅立葉變換。釋放C#中的非託管代碼
我撥打電話像這樣
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];
}
}
雖然這個片段的代碼工作正常,並給了我想要的結果,我可以看到有某種性能損失(內存泄漏),而計算髮生正在處理。 CLR無法回收本地(雙)變量,我的應用程序大幅度增加了RAM空間。
你們中的任何人都可以提出我可能會做錯的地方嗎?
從我的角度來看,我使用ANTS Mem Profiler運行我的應用程序,我可以在快照上看到雙物體幾乎聲稱大於150MB的存儲空間。這是一個正常的行爲?
Class Name Live Size (bytes) Live Instances
Double[] 150,994,980 3
任何幫助,在這方面 Srivatsa
謝謝Alex.This幫我修復了一下。我想我將不得不在C++端進行調試,以檢查代碼的這一邊是怎麼回事。 – 2010-09-27 09:40:37