Если в цикле есть следующие строки:
Type *unite = new Type(newSize);
или
double *array= new double[anySize];
каково поведение в отношении памяти, если в ней нет операторов удаления? Он будет постоянно размещать объекты и массивы в разных местах памяти, и, следовательно, утечки памяти?
Да, будет. Это:
for (int i = 0; i < 10; ++i) { Type* unite = new Type(newSize); }
выделит 10 объектов типа Type, все в разных местах. Ни один из них не будет освобожден, и в конце у вас не будет указателя ни на один из них. Вы потеряете 10 * sizeof(Type) байтов памяти.
Type
10 * sizeof(Type)
Аналогично, это
for (int i = 0; i < 10; ++i) { double *array= new double[anySize]; }
будет по той же причине утекать 10 * anySize * sizeof(double) байт памяти.
10 * anySize * sizeof(double)
Да. Вы будете пропускать память на каждой итерации цикла. boost::scoped_ptr и boost::scoped_array предназначены для таких ситуаций.
boost::scoped_ptr
boost::scoped_array
Это будет постоянно размещать объекты и массивы в разных местах памяти, и, следовательно, утечки памяти?
Предполагая, что вы имеете в виду это:
for (;x;x) { double *ptr = new double[42]; }
Тогда ответ - да, память просочилась.