C ++,.NET:这会泄漏内存吗?

时间:2011-06-21 00:43:37

标签: .net c++

我想知道这是否会导致C ++中的内存泄漏。

假设我们在.NET中使用C ++函数:

 test()
 {
     char buffer[NUMBER_OF_BYTES];
     while(forever)
     {
         for(int i=0;i < NUMBER_OF_BYTES;i++)
         {
            buffer[i] = serial->ReadChar();
         }
         String^ serialData = gcnew String(buffer);
         sendDataOut(serialData);
     }
 }

这件事基本上只是等待固定数量的串行字符,这些字符放在一个String对象中以便运出来进行处理。 String对象是否会被重用,或者每次都会创建一个新对象 - 最终咀嚼所有PC的内存?如果有人能给我一些见解,我将不胜感激。

1 个答案:

答案 0 :(得分:5)

每次都会创建一个新的。它虽然与垃圾收集器一起分配,但在不再引用时将被删除。我不认为你需要担心它会导致内存泄漏 - 唯一的方法就是sendDataOut将字符串永久存储在某个集合的某个集合中,我猜这不是这种情况。