从类方法释放已分配的内存

时间:2012-07-24 00:57:39

标签: c++-cli

我有一个带有Locate函数的c ++ - cli类Locator,它在运行时会占用大量内存。在运行结束时,大部分内存通过释放指针释放该函数,但仍有一些内存未被释放,如果我在lopp中连续运行程序,它会堆叠起来。有没有办法完全删除每次在函数末尾使用析构函数/构造函数分配的所有内存?

public ref class Locator

{
public:
Locator() { } 
~Locator()  { } 
Dictionary<String^, array< Byte >^>^ Locate(Dictionary<String^, String^>^ imgParms) 
{ .....  }

private:
int m_HP;


int main ()

{   
Locator r;

Dictionary<String^,String^>^ myDictionary =   gcnew Dictionary<String^,String^>();

Dictionary<String^,List<array<Byte>^>^>^ myResult1 = gcnew  Dictionary<String^,List<array<Byte>^>^>(); 



myResult1=r.Locate(myDictionary,0);

return 0;

}

1 个答案:

答案 0 :(得分:0)

对您创建的对象调用delete()(就像普通的C ++一样)。简单地解除引用指针将使垃圾收集器的对象处于废弃状态。通常情况下这很好,但是如果你在应用程序中使用了大量内存,那么你不希望等待GC释放内存。确保析构函数删除其各自析构函数分配的所有对象。这与普通C ++完全相同。 C ++ / CLI类隐式继承IDisposable接口,析构函数是Dispose()的包装器,所以你不必分别定义dispose()(如果我没记错的话,你无论如何都不能这样做。)