我从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