Увеличить размер динамического массива указателей

Есть класс (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;
        }
    }
}

Ответы (0 шт):