C++ C++;指针简单问题

C++ C++;指针简单问题,c++,memory,pointers,memory-leaks,C++,Memory,Pointers,Memory Leaks,如果循环中有以下行: Type *unite = new Type(newSize); 或 如果内存中没有delete操作符,那么与内存相关的行为是什么?它将不断地在不同的内存位置分配对象和数组,因此内存泄漏?是的,它会。这: for (int i = 0; i < 10; ++i) { Type* unite = new Type(newSize); } 出于同样的原因,将泄漏10*anySize*sizeof(double)字节的内存。它将不断地在不同的内存位置分配对象和数

如果循环中有以下行:

Type *unite = new Type(newSize); 

如果内存中没有delete操作符,那么与内存相关的行为是什么?它将不断地在不同的内存位置分配对象和数组,因此内存泄漏?

是的,它会。这:

for (int i = 0; i < 10; ++i) 
{
  Type* unite = new Type(newSize);
}

出于同样的原因,将泄漏
10*anySize*sizeof(double)
字节的内存。

它将不断地在不同的内存位置分配对象和数组,因此内存泄漏?

假设你是这个意思:

 for (;x;x)
 {
    double *ptr = new double[42];
 }

那么答案是肯定的,内存泄漏。

肯定。在循环的每次迭代中都会泄漏内存。只需要一个小细节,但是数组分配不应该有一些固定的空间开销,比如
10*anySize*sizeof(double)+c
?不需要实现过度分配来存储数组的大小信息。例如,数组大小数据可能存储在表中的某个位置,无论是否进行分配,该位置都会存在。因此,虽然您认为也会有一些开销泄漏是对的,但不可能量化多少(即使是像说
+c
这样一般的东西,因为这意味着开销随着分配的增加而增加,这不一定是真的)以适用于所有实现的方式。
for (int i = 0; i < 10; ++i) 
{
  double *array= new double[anySize];
}
 for (;x;x)
 {
    double *ptr = new double[42];
 }