Свободное программирование Проблема выделения памяти C ++ - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь реализовать Vector в C ++ и столкнулся с проблемой памяти, удалив массив. Это мой код:

template<class T>
class Vector {
    T* _vector;
    size_t _size;
    size_t _capacity;
public:
    Vector() : _vector(nullptr), _size(0), _capacity(0) {};
    Vector(const int &capacity) : _capacity(capacity) {
        _vector = (T*)malloc(capacity * sizeof(T));
    }

    Vector<T>& pushBack(const T &t) {
        _size++;
        if (_capacity >= _size)
            _vector[_size - 1] = t;
        else {
            _capacity <<= 1;
            _vector = (T*)realloc(_vector, _size * sizeof(T));
            _vector[_size - 1] = t;
        }
        return *this;
    }

    virtual ~Vector() { delete[] _vector; }
};

Я пытался бегло программировать, чтобы сделать это в основном:

int main() {
    Vector<int> v();
    v.pushBack(42).pushBack(100);
}

после отладки я заметил, что свободное программирование вызывает деструктор HEAP CORRUPTION ERROR, кто-нибудь знает почему?

Кроме того, есть ли лучший "C ++" способ перераспределения массива T?

Спасибо!

РЕДАКТИРОВАТЬ: я изменил все функции malloc / realloc в классе на новый T [размер], и теперь это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...