Программа прервана ненормально

Я пишу бот для codeingame.com на C ++. Я прекрасно компилирую свою программу на ПК. Затем я отправляю его на сервер codeingame.com для выполнения. Поэтому у меня нет возможности отладить его локально.

Я написал предикат для сортировки данных. Вот соответствующий фрагмент кода:

Код 1

for (const auto &zz : zone_to_zone)
{
vector<pair<int, int>> can_go;

for (int to : zz.second)
can_go.push_back({ to, visit_count[to] });

sort(can_go.begin(), can_go.end(),
[](const pair<int, int>& z1, const pair<int, int>& z2)
{
return z1.second < z2.second;
});

Эта программа вылетает на сервере после номера выполнения сортировки выше и выдает следующую ошибку:

Standard Error Stream:

Aborted.

at raise.c. function __GI_raise (sig=sig@entry=6) on line 56
at abort.c. function __GI_abort () on line 89
at libc_fatal.c. function __libc_message (do_abort=do_abort@entry=1, fmt=fmt@entry=0x7ffff6b1bc60 "*** Error in `%s': %s: 0x%s ***\n") on line 175
at malloc.c. function malloc_printerr (action=1, str=0x7ffff6b17d1e "free(): invalid pointer", ptr=<optimized out>) on line 4996
at malloc.c. function _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) on line 3840
at new_allocator.h. function __gnu_cxx::new_allocator<Zone>::deallocate ( this=0x7fffffffe8e0, __p=0x61e0f0) on line 110
at alloc_traits.h. function std::allocator_traits<std::allocator<Zone> >::deallocate (__a=..., __p=0x61e0f0, __n=32) on line 383
at stl_vector.h. function std::_Vector_base<Zone, std::allocator<Zone> >::_M_deallocate (this=0x7fffffffe8e0, __p=0x61e0f0, __n=32) on line 178
at stl_vector.h. function std::_Vector_base<Zone, std::allocator<Zone> >::~_Vector_base (this=0x7fffffffe8e0, __in_chrg=<optimized out>) on line 160
at stl_vector.h. function std::vector<Zone, std::allocator<Zone> >::~vector ( this=0x7fffffffe8e0, __in_chrg=<optimized out>) on line 425

Если я немного изменю предикат:

Код 2

for (const auto &zz : zone_to_zone)
{
vector<pair<int, int>> can_go;

for (int to : zz.second)
can_go.push_back({ to, visit_count[to] });

sort(can_go.begin(), can_go.end(),
[](const pair<int, int>& z1, const pair<int, int>& z2)
{
return false;
});

Тогда программа не падает!

Сервер использует g ++ 4.9. Почему это происходит? Что не так в коде 1?

0

Решение

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

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

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

По вопросам рекламы [email protected]