Process returned 1073741571 c что такое
Перейти к содержимому

Process returned 1073741571 c что такое

  • автор:

Clion exit code -1073741571 (0xC00000FD)

I had no problem in declaration of array in size of less than 1.000.000 2 days ago and now I get this error. I changed nothing in Clion.

What should I do?

Hadi Fazelinia's user avatar

1 Answer 1

The error number 0xC00000FD stands for «stack overflow» (I suppose your platform is Windows). Under Windows local variables are allocated on the stack (as on most other platforms too) and int arr[30007][5] is pretty big (30007 * 5 * 4 = 600140 bytes) and stacks are usually rather small (typically around 1 Mb, again platform dependant)

Process returned -1073741571 (0xC00000FD) on my c++ code

Process returned -1073741571 (0xC00000FD) on my c++ code

As you can see in Windows NT status reference, error code 0xC00000FD means stack overflow (usually caused by infinite recursion). In your case, it seems that you simply allocate a far too large array on the stack (line 57, baby babies[50000]; ), which is an array of size 50000*20=1000000 . The simplest solution will be a dynamic allocation

A better solution would be to use std::vector which is a dynamic array that can grow and shrink. The simplest thing to do is to take a vector of size 50000, this way:

However, this is a poor solution as your pre-allocate 50000 elements even though you probably need much much less, and a better solution would be to add an element on-demand, using .push_back(element) method, or in your case, allocate n elements to the vector (impossible in a stack-allocated array).

Завершение процесса (код ошибки -1073741571)

Поэтому я работаю над этой симуляцией, для которой я должен написать код.
Первоначально я получал код ошибки 255 (0xff), который, как я думал, мог быть связан с добавлением Eigen в мои блоки кода. Однако, как только я переместил свои собственные Eigen-заголовки в папку include блоков кода, я теперь получаю новую ошибку с сообщением:

Процесс завершен со статусом -1073741571 (0 минут, 2 секунд)

Я посмотрел эту ошибку, и она говорит, что она возникает, когда ошибка вызывает переполнение стека. Я запустил мой отладчик и получил сообщение:

Зарегистрирован новый тип: wxString

Зарегистрирован новый тип: STL String

Зарегистрирован новый тип: STL Vector

Установка точек останова Имя и версия отладчика: GNU GDB (GDB) 7.6.1

PID дочернего процесса: 13284

Программа получила сигнал SIGSEGV, Ошибка сегментации.

Таким образом, я знал, что есть ошибка с одной из моих функций.
Вот мой код (он довольно большой)

Я опробовал несколько функций по отдельности в разных программах. Проблема не связана с заголовками Eigen, так как sumrow () работал отлично.
Однако функция Пуассона () выдала мне ту же ошибку (-1073741571). Я попытался заменить do-while простым, но это не сработало.

Ранее, когда я использовал Poisson () отдельно, он работал нормально. Но теперь, это не работает независимо друг от друга.

Извините за длинный вопрос, но я был на нем уже больше недели и не могу понять это. Если бы вы могли сказать мне, что, возможно, не так с моим кодом, я был бы очень благодарен.
Заранее большое спасибо!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *