Недавно начал использовать vector в С++, столкнулся с ошибкой:
free(): double free detected in tcache 2 Aborted
Программа написана в целях обучения. Если знаете как эту ошибку исправить, напишите пожалуйста по подробнее, самая главная задача - освободить x.
#inlclude <vector>
#include <iostream>
using namespace std;
class Obj{
int *x;
int y;
public:
Obj(int x, int y){
this->x = new int(x);
this->y = y;
}
~Obj(){delete x;}
int getX(){return *x;}
int getB(){return y;}
};
void create(int x, int y, vector <Obj> &v){
Obj obj(x, y);
v.push_back(obj);
}
int main(int argc, char const *argv[]){
vector <Obj> v;
create(10, 40, v);
create(1032, 124, v);
create(4, 2, v);
for(int i = 0; i < v.size(); i++){
cout << "X - " << v[i].getX() << endl;
cout << "Y - " << v[i].getB() << endl << endl;
}
return 0;
}
Проблема была решена конструктором копирования, спасибо всем кто помог! :)
(Изменения помечены комментариями)
#include <vector>
#include <iostream>
using namespace std;
class Obj{
int *x;
int y;
public:
//конструктор копирования
Obj(const Obj &obj){
x = new int(*obj.x);
y = obj.y;
}
Obj(int x, int y){
this->x = new int(x);
this->y = y;
}
~Obj(){delete x;}
int getX(){return *x;}
int getB(){return y;}
};
void create(int x, int y, vector <Obj> &v){
Obj obj(x, y);
v.push_back(obj);
}
int main(int argc, char const *argv[]){
vector <Obj> v;
create(10, 40, v);
create(1032, 124, v);
create(4, 2, v);
for(int i = 0; i < v.size(); i++){
cout << "X - " << v[i].getX() << endl;
cout << "Y - " << v[i].getB() << endl << endl;
}
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вообщем, не понимаю как правильно создавать второе окноЕсть функция addTimer(), как метод класса главного окна MainWindow
Имеется следующая проблемаЕсть функция для расчета среднего балла (индивидуальных и общего)
Можно ли double "засунуть" в bitset, чтобы он вывел его в 2виде?
Отладчик gdb не показывает содержимое переменной типа std::string