2016-02-20 3 views
-2

У меня есть общественный вектор в файле заголовка MyClassC++ Vector push_back двойной бесплатно или повреждение (fasttop)

vector<int> myVector 

О файле CPP, вставить элемент в вектор

myVector.push_back(2); 

Но я получил ошибку двойного освобождения или коррупции (fasttop)

Как решить эту ошибку?

+0

Если это будет единственным содержанием вашего кода, вы не получите ошибку. Вероятно, у вас есть проблема с памятью где-то еще в вашем коде, и она просто проявляется здесь. Попробуйте что-нибудь вроде [valgrind] (http://valgrind.org/). –

+1

С кодом, который вы показали, невозможно точно сказать, в чем проблема. Пожалуйста, входите в привычку включать [mcve]. – chris

ответ

0

Недавно я столкнулся с тем же вопросом, что и у вас. Это потому, что я использую многопоточность для динамического выделения двумерного вектора, причем каждый поток обращается к одному столбцу вектора.

Возможно, это может быть ваша проблема, поэтому выделение нескольких потоков может иметь перекрытие и конфликт.

Чтобы решить эту проблему, я предлагаю вам не использовать push_back, но выделите свой вектор перед его использованием.

+1

Состояние гонки может быть проблемой. Возможно, это самый вероятный вариант. Но могут быть и другие проблемы. Без дополнительной информации мы не можем это знать. – JojOatXGME

Смежные вопросы