У меня возникает странная ошибка при инициализации моего детекса или вектора. Я использую QtCreator и CMake-Project.Инициализация вектора и дека или push_back вызывает ошибку SIGABRT
Если я использую Deque, она ликвидирует инициализации:
std::deque<int> myValues; // <-- abort here
for (int i=0;i<10;++i)
{
myValues.push_back(i);
}
, когда я использую Deque, она ликвидирует на push_back:
std::vector<int> myValues;
for (int i=0;i<10;++i)
{
myValues.push_back(i); // <-- abort here
}
я не могу выяснить, почему это происходит сейчас (он работал так все время). Оба прерывания происходят внутри _gnu_cxx :: new_allocator < int> :: allocate.
Любые подсказки?
Спасибо за внимание!
Хартмут
Что-то кажется рыбным с распределением памяти. Работает ли 'malloc' /' free', или они также поднимают SIGABRT? Я предполагаю, что внутренняя бухгалтерия в glibc, выполняемая этими функциями, испорчена. Попробуйте запустить Valgrind в своем приложении, возможно, он может пролить некоторый свет. –
Вы должны вызывать некоторое неопределенное поведение где-то еще в программе. Проверьте, выполняете ли вы такие вещи, как доступ к ячейкам памяти за пределами границ. – juanchopanza