Я пытаюсь реализовать 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 [размер], и теперь это нормально.