Я пытался запустить этот код из книги C++ Stroustroup, есть код, который я добавил, поскольку все было недоступно в книге. Я продолжаю сталкиваться с следующей проблемой. Я знаю, что здесь есть несколько вопросов по той же ошибке, но мой код отличается и, следовательно, этот вопрос.Недопустимый доступ к объекту C++
Ошибка
копия (5826,0x7fff76b09300) таНос: * ошибка для объекта 0x7ff6a9404c18: неправильные контрольной суммы для освобожденного объекта - объект, вероятно, был изменен после освобождения. * установить контрольную точку в malloc_error_break для отладки Прервать ловушки: 6
#include<stdio.h>
#include<iostream>
using namespace std;
class Vector {
private:
double * elem; // elem points to an array of sz doubles
int sz;
public:
Vector(int s) {
sz = s;
elem = new double[sz];
for (int i = 0; i<sz; i++) {
elem[i] = i;
}
}
~Vector() { delete[] elem; } // destructor: release resources
Vector(const Vector& a); // copy constructor
Vector& operator=(const Vector& a); // copy assignment
double& operator[](int i);
const double& operator[](int i) const;
int size() const;
};
Vector::Vector(const Vector& a) // copy constr uctor
{
elem = new double[sz], // allocate space for elements
sz = a.sz;
for (int i = 0; i != sz; ++i) // copy elements
elem[i] = a.elem[i];
}
double& Vector::operator[](int k) {
return this->elem[k];
}
Vector& Vector::operator=(const Vector& a) // copy assignment
{
double* p = new double[a.sz];
for (int i = 0; i != a.sz; ++i)
p[i] = a.elem[i];
delete[] elem; // delete old elements
elem = p;
sz = a.sz;
return *this;
}
int main() {
Vector v1(10);
Vector v2 = v1;
v1[0] = 2;
v2[1] = 3;
cout << v1[0] << "\n";
return 0;
}
Спасибо, это ушло от моего внимания, и было очень сложно найти этот номер с сообщением об ошибке, которое я получил, почему система выдавала эту ошибку? –