Увеличить размер динамического массива указателей
Есть класс (MyStorage) - хранилище объектов. Класс в себе содержит массив указателей на объект. Добавить объект на указанную позицию в этот массив можно с помощью функции setObject(). Если массив больше чем позиция добавляемого объекта, то все ок, а если массив меньше, то требуется его увеличить. Не работает увеличение размера массива, да к тому же компилятор ругается на утечку памяти. Не понимаю. Подскажите, что не так?
class MyStorage {
private:
Base** storage;
int size;
public:
//конструктор
MyStorage(int size) {
this->storage = new Base*[size];
for (int i = 0; i < size; i++) {
this->storage[i] = NULL;
}
this->size = size;
}
// добавить объект на i-тую позицию
// если хранилище меньше, чем заданная позиция,
// то расширяем хранилище
void setObject(int i, Base *object) {
if (i < this->size) {
this->storage[i] = object;
}
else {
int newSize = i + 1;
Base** newStorage = new Base *[newSize];
for (int k = 0; k < this->size; k++) {
newStorage[k] = this->storage[k];
}
for (int k = this->size; k < newSize; k++) {
newStorage[k] = NULL;
}
delete[] this->storage;
this->storage = newStorage;
this->size = newSize;
this->storage[i] = object;
}
}
}