C++NET:这会泄漏内存吗

C++, .NET: Will this leak memory?

本文关键字:内存 泄漏 C++NET      更新时间:2023-10-16

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

假设我们在中的C++中有一个函数。NET:

 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对象会被重用吗?还是每次都会创建一个新对象——最终会占用电脑的所有内存?如果有人能给我一些见解,我将不胜感激。

每次都会创建一个新的。不过,它是用垃圾收集器分配的,因此当它不再被引用时,它将被删除。我认为你不需要担心它会导致内存泄漏——唯一会发生这种情况的方法是,如果sendDataOut将字符串永久存储在某个集合的某个地方,我想情况并非如此。