Да , потому что вы не удаляете память, выделенную new
.
. Правильный путь:
void ArrayStorage::merge(int low, int mid, int high)
{
int start = low;
int marker = low;
int secondStart = mid + 1;
temp = new string [high + 1];
//rest of the code
delete[] temp; //free the memory
}
В C ++ нетавтоматическое управление памятью для динамически размещаемых объектов.Каждый раз, когда вы вызываете new
или malloc
(этот метод обычно для C), вы выделяете память в динамическом хранилище, которое вы несете ответственность за освобождение, через delete
или free
соответственно.В вашем случае вы выделяете массив размером high + 1
, который необходимо освободить с помощью delete[]
.
РЕДАКТИРОВАТЬ: Как уже отмечали другие, может быть std::vector
лучше подходит, но это зависит от того, что вы хотите сделать.Посмотри.