двойное освобождение или искажение (выход) с вектором push_back пары & lt; int, int & gt ;?

У меня есть следующие основные программы:

#include "asd.h"
int main() {
asd a;
a.input();
}

Ниже приведен файл asd, который является файлом класса:

#include "asd.h"
int maxlength = 256;
vector<pair<int, int>> t;

void asd::input() {
for (int x = 0; x < 400; x++) {
tAdd(x);
}

}

void asd::tAdd(int x) {
if (t.size() == maxlength) {
vector<pair<int, int>>::iterator it = t.begin();
t.erase(it);
t.resize(maxlength);
}
//The function below gives me the error
t.push_back(make_pair(x, 0));
//
}

Что здесь происходит? Я не оперирую какими-либо указателями. У меня в основном есть класс asd, который содержит вектор пары целых в качестве члена данных. Из моей основной программы я создаю объект класса asd и вызываю функцию ввода. Функция ввода просто зацикливается до 400 и вызывает функцию tAdd. Эта функция в основном стирает первый элемент вектора и изменяет его размер, если он достигает максимального размера. Затем есть утверждение, которое отталкивает пару целых. Вот в чем проблема, на самом деле она никогда не доходит до того, что должна изменить размер вектора. Он всегда дает сбой на 8-й итерации, и я знаю, что это вызывает функция возврата назад. Кроме того, ошибка заключается в следующем:

двойная свобода или коррупция (выход)
Прервано (ядро сброшено)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector