我想知道这是否会导致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的内存?如果有人能给我一些见解,我将不胜感激。
答案 0 :(得分:5)
每次都会创建一个新的。它虽然与垃圾收集器一起分配,但在不再引用时将被删除。我不认为你需要担心它会导致内存泄漏 - 唯一的方法就是sendDataOut将字符串永久存储在某个集合的某个集合中,我猜这不是这种情况。