1073741571 код ошибки

I’m trying to process a large graph using a recursive algorithm. Due to the deep recursion, I encountered the problem described at Python: Maximum recursion depth exceeded.

So, I tried increasing the limit on recursion depth, like so:

import sys
sys.setrecursionlimit(5000)

However, whatever value I use for the depth, I cannot get the result I want. Either I still get the exception, or else the program just halts with no output on the screen but: Process finished with exit code -1073741571.

How can I solve the problem?


See also: What is the hard recursion limit for Linux, Mac and Windows?

Karl Knechtel's user avatar

Karl Knechtel

61.7k11 gold badges97 silver badges147 bronze badges

asked Dec 17, 2013 at 8:12

Salvador Dali's user avatar

Salvador DaliSalvador Dali

212k146 gold badges696 silver badges752 bronze badges

15

You could use something like:

if __name__ == '__main__':
    sys.setrecursionlimit(100000)
    threading.stack_size(200000000)
    thread = threading.Thread(target=your_code)
    thread.start()

This solved both my recursion limitation and my heap size limitation.

answered Aug 9, 2015 at 7:42

Juan Pablo VEGA's user avatar

1

n0v140k

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

1

08.04.2022, 12:50. Показов 2359. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день! пишу код, работа с файлами. СodeBlocks «warning» не выдаёт, но выдаёт «Process returned -1073741571 (0xC00000FD)»… что это значит и что делать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string.h>
#include <ctime>
#include <sstream>
#include <cstdio>
#include <cctype>
#include <windows.h>
 
using namespace std;
int main()
{
    int i, j;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand( time(NULL) );
    int N = rand() % 1001 + 1000;
    ifstream f91, f101;
    int kol_fam = 0, kol_ima = 0;
    f91.open("surnames.txt");
    f101.open("names.txt");
    while( !f91.eof() ){
        string qwe;
        f91 >> qwe;
        kol_fam++;
    }
    f91.close();
        while( !f101.eof() ){
        string qwe;
        f101 >> qwe;
        kol_ima++;
    }
    f101.close();
    ifstream f9, f10;
    f9.open("surnames.txt");
    f10.open("names.txt");
    char fam[kol_fam][60];
    char ima[kol_ima][60];
    string st3, st4;
    for( i = 0; i < kol_fam; i++){
        f9 >> st3;
        int b = st3.size();
        for( j = 0; j < b; j++){
            if(j != 0){
                st3[j] = tolower( st3[j] );
                fam[i][j] = st3[j];
            }
            else fam[i][j] = st3[j];
        }
        st3.clear();
    }
    for( i = 0; i < kol_ima; i++){
        f10 >> st4;
        int b = st4.size();
        for(j = 0; j < b; j++){
            if(j == 0){
                st4[j] = toupper(st4[j]);
                ima[i][j] = st4[j];
            }
            else ima[i][j] = st4[j];
        }
        st4.clear();
    }
    f9.close();
    f10.close();
    ofstream f3;
    string st, st2;
    f3.open("Result_olymp1.txt", ios_base::trunc);
    for( i = 0; i < N; i++){
        int klass = rand() % 3 + 9;
        int shkola = rand() % 100 + 1;
        int n = rand() % kol_fam + 1;
        int n1 = rand() % kol_ima + 1;
        int b1 = rand() % 301;
        int b2 = rand() % 301;
        int b3 = rand() % 301;
        st = fam[n];
        st2 = ima[n1];
        f3 << st << ' ' << st2 << ' ' << klass << ' ' << shkola << ' ' << b1 << ' ' << b2 << ' ' << b3 << endl;
    st.clear();
    st2.clear();
    }
    f3.close();
    return 0;
}

P.S. это вырезка из основного кода(он у меня на 350 строчек), ищю ошибку и поэтому по частям проверяю. на этой части он выдал мне такую ошибку(пишу на CodeBlocks 20.03).
помогите пожалуйста!



0



фрилансер

4792 / 4392 / 935

Регистрация: 11.10.2019

Сообщений: 11,567

08.04.2022, 12:56

2

n0v140k, при запуске на отладку где отладчик останавливается ?

а ещё:
1) требуется добавить форматирование
2) добавить скоупы для файлов
3) прекратить использовать eof()
4) …



0



John Prick

2153 / 1663 / 701

Регистрация: 27.07.2012

Сообщений: 4,944

08.04.2022, 12:59

3

4) и такое тоже прекратить

C++
1
2
3
4
int kol_fam, kol_ima;
/* ... */
char fam[kol_fam][60];
char ima[kol_ima][60];



1



фрилансер

4792 / 4392 / 935

Регистрация: 11.10.2019

Сообщений: 11,567

08.04.2022, 13:01

4

да да, инициализацию переменных добавить и открыть для себя вектор ))



0



1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

08.04.2022, 13:45

 [ТС]

5

в окне отладчика следующее:
Active debugger config: GDB/CDB debuggerefault
Собрать для гарантирования, что исходники новые
Выбраная цель:
Debug
Adding source dir: C:UsersПользовательDesktopНовая папка1111zzz
Adding source dir: C:UsersПользовательDesktopНовая папка1111zzz
Adding file: C:UsersПользовательDesktopНовая папка1111zzzbinDebug1111zzz.exe
Changing directory to: C:/Users/73B5~1/Desktop/51A2~1/1111zzz/.
Set variable: PATH=.;C:UsersПользовательDesktopCodeBlocksMinGWbin;C:UsersПользователь DesktopCodeBlocksMinGW;C:ProgramDataOracleJavajavapath;C:WindowsSystem32 ;C:Windows;C:WindowsSystem32wbem;C:WindowsSystem32WindowsPowerShellv1.0; C:WindowsSystem32OpenSSH;C:UsersПользовательAppDataLocalMicrosoftWindow sApps
Запускается отладчик: C:UsersПользовательDesktopCodeBlocksMINGWbingdb.exe -nx -fullname -quiet -args C:/Users/73B5~1/Desktop/51A2~1/1111zzz/bin/Debug/1111zzz.exe
сделано
Настройки точки прерывания
Название и версия отладчика GNU gdb (GDB) 8.1
Child process PID: 1160
Отладчик завершился со статусом 1;

в окне сборки написано: «Цель уже была достигнута. Nothing to be done (all items are up-to-date).»
я новичок, неумею ещё векторами пользоваться, поэтому через массивы типа char сделал(

блен, вместо смайлика смеющегося там должно быть «:»D»

Добавлено через 38 минут
помогите пожалуйста! я так и не понял, что делать то нужно? что это значит:
» 1) требуется добавить форматирование
2) добавить скоупы для файлов» ?
из-за чего выскакивает ошибка «Process returned -1073741571 (0xC00000FD)»?



0



фрилансер

4792 / 4392 / 935

Регистрация: 11.10.2019

Сообщений: 11,567

08.04.2022, 13:51

6

n0v140k, отладчик разве нигде не остановился? Если нет — это плохо, сложнее искать будет

например, вот тут индекс j может выйти за край массива. Это даже не проверяется

Цитата
Сообщение от n0v140k
Посмотреть сообщение

fam[i][j]



0



1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

08.04.2022, 13:56

 [ТС]

7

тогда так писать?
for(j = 0; j<b && j<60; j++){
/……../
}
?



0



фрилансер

4792 / 4392 / 935

Регистрация: 11.10.2019

Сообщений: 11,567

08.04.2022, 14:02

8

n0v140k, можно и так, но лучше обходиться без магических констант, а использовать переменные. Или всё же лучше вектор



0



zss

Модератор

Эксперт С++

13245 / 10387 / 6210

Регистрация: 18.12.2011

Сообщений: 27,784

08.04.2022, 20:51

9

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <vector>
#include <ctime>
//#include <sstream>
//#include <cstdio>
#include <cctype>
#include <windows.h>
 
using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand((unsigned) time(NULL) );
 
    ifstream f91;
 
    vector<string> fam;
    f91.open("surnames.txt");
    if(!f91)
    {
        cout<<"файл 'surnames.txt' не открылся";
        return 1;
    }
    string qwe;
    while( f91 >> qwe )
        fam.push_back(qwe);
    f91.close();
 
    f91.open("names.txt");
    if(!f91)
    {
        cout<<"файл 'names.txt' не открылся";
        return 1;
    }
    vector<string> ima;
    while( f91 >> qwe )
        ima.push_back(qwe);
    f91.close();
 
    ofstream f3;
    f3.open("Result_olymp1.txt", ios_base::trunc);
    if(!f3)
    {
        cout<<"файл 'Result_olymp1.txt' не открылся";
        return 1;
    }
 
    int N = rand() % 1001 + 1000;
    for(int i = 0; i < N; i++){
        int klass = rand() % 3 + 9;
        int shkola = rand() % 100 + 1;
        int n = rand() % fam.size() + 1;
        int n1 = rand() % ima.size() + 1;
        int b1 = rand() % 301;
        int b2 = rand() % 301;
        int b3 = rand() % 301;
        f3 << fam[n] << ' ' << ima[n1] << ' ' << klass << ' ' 
            << shkola << ' ' << b1 << ' ' << b2 << ' ' << b3 << endl;
    }
    f3.close();
    return 0;
}



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

08.04.2022, 20:51

Помогаю со студенческими работами здесь

Process returned -107. в среде codeblocks как расшифровать ошибку?
Помогите понять какую ошибку выдает? стандарт c99, при уменьшении dz до 0.001 работает но метод…

Ошибка «Process returned -1073741819 (0xC0000005)»
Я только начинаю учиться программировать, и при отладке программы всплывает непонятная мне ошибка…

SFML. Ошибка «Process returned -1073741819»
Доброго времени суток.
Возникла проблема, которую я не понимаю как решить. При запуске…

Необработанное исключение: 0xC00000FD: Stack overflow
Я решаю одну задачу, где происходит перемена значений, при этом у меня переполняется стек, вот код…

Программа падает при работе с буфером с кодом ошибки -1073741571
Написал небольшую программу для перечисления файлов и папок в определённой директории. При…

Как взять title, process, process id активного окна?
Хочу в этом switch, отловить title, process, process id. У меня есть 2 функции
LRESULT CALLBACK…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

I’m trying to process a large graph using a recursive algorithm. Due to the deep recursion, I encountered the problem described at Python: Maximum recursion depth exceeded.

So, I tried increasing the limit on recursion depth, like so:

import sys
sys.setrecursionlimit(5000)

However, whatever value I use for the depth, I cannot get the result I want. Either I still get the exception, or else the program just halts with no output on the screen but: Process finished with exit code -1073741571.

How can I solve the problem?


See also: What is the hard recursion limit for Linux, Mac and Windows?

Karl Knechtel's user avatar

Karl Knechtel

60.6k11 gold badges93 silver badges138 bronze badges

asked Dec 17, 2013 at 8:12

Salvador Dali's user avatar

Salvador DaliSalvador Dali

209k145 gold badges690 silver badges749 bronze badges

15

You could use something like:

if __name__ == '__main__':
    sys.setrecursionlimit(100000)
    threading.stack_size(200000000)
    thread = threading.Thread(target=your_code)
    thread.start()

This solved both my recursion limitation and my heap size limitation.

answered Aug 9, 2015 at 7:42

Juan Pablo VEGA's user avatar

1

n0v140k

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

1

08.04.2022, 12:50. Показов 1565. Ответов 8

Метки нет (Все метки)


Добрый день! пишу код, работа с файлами. СodeBlocks «warning» не выдаёт, но выдаёт «Process returned -1073741571 (0xC00000FD)»… что это значит и что делать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string.h>
#include <ctime>
#include <sstream>
#include <cstdio>
#include <cctype>
#include <windows.h>
 
using namespace std;
int main()
{
    int i, j;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand( time(NULL) );
    int N = rand() % 1001 + 1000;
    ifstream f91, f101;
    int kol_fam = 0, kol_ima = 0;
    f91.open("surnames.txt");
    f101.open("names.txt");
    while( !f91.eof() ){
        string qwe;
        f91 >> qwe;
        kol_fam++;
    }
    f91.close();
        while( !f101.eof() ){
        string qwe;
        f101 >> qwe;
        kol_ima++;
    }
    f101.close();
    ifstream f9, f10;
    f9.open("surnames.txt");
    f10.open("names.txt");
    char fam[kol_fam][60];
    char ima[kol_ima][60];
    string st3, st4;
    for( i = 0; i < kol_fam; i++){
        f9 >> st3;
        int b = st3.size();
        for( j = 0; j < b; j++){
            if(j != 0){
                st3[j] = tolower( st3[j] );
                fam[i][j] = st3[j];
            }
            else fam[i][j] = st3[j];
        }
        st3.clear();
    }
    for( i = 0; i < kol_ima; i++){
        f10 >> st4;
        int b = st4.size();
        for(j = 0; j < b; j++){
            if(j == 0){
                st4[j] = toupper(st4[j]);
                ima[i][j] = st4[j];
            }
            else ima[i][j] = st4[j];
        }
        st4.clear();
    }
    f9.close();
    f10.close();
    ofstream f3;
    string st, st2;
    f3.open("Result_olymp1.txt", ios_base::trunc);
    for( i = 0; i < N; i++){
        int klass = rand() % 3 + 9;
        int shkola = rand() % 100 + 1;
        int n = rand() % kol_fam + 1;
        int n1 = rand() % kol_ima + 1;
        int b1 = rand() % 301;
        int b2 = rand() % 301;
        int b3 = rand() % 301;
        st = fam[n];
        st2 = ima[n1];
        f3 << st << ' ' << st2 << ' ' << klass << ' ' << shkola << ' ' << b1 << ' ' << b2 << ' ' << b3 << endl;
    st.clear();
    st2.clear();
    }
    f3.close();
    return 0;
}

P.S. это вырезка из основного кода(он у меня на 350 строчек), ищю ошибку и поэтому по частям проверяю. на этой части он выдал мне такую ошибку(пишу на CodeBlocks 20.03).
помогите пожалуйста!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,417

08.04.2022, 12:56

2

n0v140k, при запуске на отладку где отладчик останавливается ?

а ещё:
1) требуется добавить форматирование
2) добавить скоупы для файлов
3) прекратить использовать eof()
4) …

0

John Prick

2058 / 1591 / 678

Регистрация: 27.07.2012

Сообщений: 4,768

08.04.2022, 12:59

3

4) и такое тоже прекратить

C++
1
2
3
4
int kol_fam, kol_ima;
/* ... */
char fam[kol_fam][60];
char ima[kol_ima][60];

1

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,417

08.04.2022, 13:01

4

да да, инициализацию переменных добавить и открыть для себя вектор ))

0

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

08.04.2022, 13:45

 [ТС]

5

в окне отладчика следующее:
Active debugger config: GDB/CDB debuggerefault
Собрать для гарантирования, что исходники новые
Выбраная цель:
Debug
Adding source dir: C:UsersПользовательDesktopНовая папка1111zzz
Adding source dir: C:UsersПользовательDesktopНовая папка1111zzz
Adding file: C:UsersПользовательDesktopНовая папка1111zzzbinDebug1111zzz.exe
Changing directory to: C:/Users/73B5~1/Desktop/51A2~1/1111zzz/.
Set variable: PATH=.;C:UsersПользовательDesktopCodeBlocksMi nGWbin;C:UsersПользовательDesktopCodeBlocksM inGW;C:ProgramDataOracleJavajavapath;C:Window sSystem32;C:Windows;C:WindowsSystem32wbem;C: WindowsSystem32WindowsPowerShellv1.0;C:Windows System32OpenSSH;C:UsersПользовательAppDataLo calMicrosoftWindowsApps
Запускается отладчик: C:UsersПользовательDesktopCodeBlocksMINGWbin gdb.exe -nx -fullname -quiet -args C:/Users/73B5~1/Desktop/51A2~1/1111zzz/bin/Debug/1111zzz.exe
сделано
Настройки точки прерывания
Название и версия отладчика GNU gdb (GDB) 8.1
Child process PID: 1160
Отладчик завершился со статусом 1;

в окне сборки написано: «Цель уже была достигнута. Nothing to be done (all items are up-to-date).»
я новичок, неумею ещё векторами пользоваться, поэтому через массивы типа char сделал(

блен, вместо смайлика смеющегося там должно быть «:»D»

Добавлено через 38 минут
помогите пожалуйста! я так и не понял, что делать то нужно? что это значит:
» 1) требуется добавить форматирование
2) добавить скоупы для файлов» ?
из-за чего выскакивает ошибка «Process returned -1073741571 (0xC00000FD)»?

0

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,417

08.04.2022, 13:51

6

n0v140k, отладчик разве нигде не остановился? Если нет — это плохо, сложнее искать будет

например, вот тут индекс j может выйти за край массива. Это даже не проверяется

Цитата
Сообщение от n0v140k
Посмотреть сообщение

fam[i][j]

0

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

08.04.2022, 13:56

 [ТС]

7

тогда так писать?
for(j = 0; j<b && j<60; j++){
/……../
}
?

0

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,417

08.04.2022, 14:02

8

n0v140k, можно и так, но лучше обходиться без магических констант, а использовать переменные. Или всё же лучше вектор

0

zss

Модератор

Эксперт С++

12627 / 10125 / 6097

Регистрация: 18.12.2011

Сообщений: 27,158

08.04.2022, 20:51

9

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <vector>
#include <ctime>
//#include <sstream>
//#include <cstdio>
#include <cctype>
#include <windows.h>
 
using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand((unsigned) time(NULL) );
 
    ifstream f91;
 
    vector<string> fam;
    f91.open("surnames.txt");
    if(!f91)
    {
        cout<<"файл 'surnames.txt' не открылся";
        return 1;
    }
    string qwe;
    while( f91 >> qwe )
        fam.push_back(qwe);
    f91.close();
 
    f91.open("names.txt");
    if(!f91)
    {
        cout<<"файл 'names.txt' не открылся";
        return 1;
    }
    vector<string> ima;
    while( f91 >> qwe )
        ima.push_back(qwe);
    f91.close();
 
    ofstream f3;
    f3.open("Result_olymp1.txt", ios_base::trunc);
    if(!f3)
    {
        cout<<"файл 'Result_olymp1.txt' не открылся";
        return 1;
    }
 
    int N = rand() % 1001 + 1000;
    for(int i = 0; i < N; i++){
        int klass = rand() % 3 + 9;
        int shkola = rand() % 100 + 1;
        int n = rand() % fam.size() + 1;
        int n1 = rand() % ima.size() + 1;
        int b1 = rand() % 301;
        int b2 = rand() % 301;
        int b3 = rand() % 301;
        f3 << fam[n] << ' ' << ima[n1] << ' ' << klass << ' ' 
            << shkola << ' ' << b1 << ' ' << b2 << ' ' << b3 << endl;
    }
    f3.close();
    return 0;
}

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

08.04.2022, 20:51

Помогаю со студенческими работами здесь

Process returned -107. в среде codeblocks как расшифровать ошибку?
Помогите понять какую ошибку выдает? стандарт c99, при уменьшении dz до 0.001 работает но метод…

Ошибка «Process returned -1073741819 (0xC0000005)»
Я только начинаю учиться программировать, и при отладке программы всплывает непонятная мне ошибка…

SFML. Ошибка «Process returned -1073741819»
Доброго времени суток.
Возникла проблема, которую я не понимаю как решить. При запуске…

Необработанное исключение: 0xC00000FD: Stack overflow
Я решаю одну задачу, где происходит перемена значений, при этом у меня переполняется стек, вот код…

Программа падает при работе с буфером с кодом ошибки -1073741571
Написал небольшую программу для перечисления файлов и папок в определённой директории. При…

Как взять title, process, process id активного окна?
Хочу в этом switch, отловить title, process, process id. У меня есть 2 функции
LRESULT CALLBACK…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

Уведомления

  • Начало
  • » Python для новичков
  • » Рекурсия и мой компьютер

#1 Сен. 20, 2017 22:18:56

Рекурсия и мой компьютер

 import random
import sys
print(sys.getrecursionlimit())
sys.setrecursionlimit(40000)
print(sys.getrecursionlimit())
g = []
for i in range(200):
    b = random.randint(0, 1241)
    g.append(b)
def sorter():
    global g
    for i, k in enumerate(g):
        try:
            if g[i] > g[i + 1]:
                g[i], g[i + 1] = g[i + 1], g[i]
                return sorter()
        except IndexError:
            break
sorter()
print(g)

Пытался создать что то похожее на метод sort() и столкнулся с интересным поведением змеи. При запуске этого кода на моём пк интерпретатор выдаёт вот такую ошибку:

 Process finished with exit code -1073741571 (0xC00000FD)

Причём пишет только это, никакой трэйсбэк не вылетает и красные слова тоже. Решил запустить через онлайн компилятор — всё заработало прекрасно и ошибки никакой не было.

Почему так?

Лучший учитель — это ты сам.

Отредактировано Djo0513 (Сен. 20, 2017 22:19:57)

Офлайн

  • Пожаловаться

#2 Сен. 21, 2017 00:16:32

Рекурсия и мой компьютер

Вы гуглить видимо совсем не пробовали. Подумали что нашли что то сверх неординарное и надо быстрее показать это сообществу. Однако первая же ссылка в гугле расставляет все на места — StackOverflow.com

P.S. у меня работает

_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Сен. 21, 2017 00:17:44)

Офлайн

  • Пожаловаться

#3 Сен. 21, 2017 13:41:00

Рекурсия и мой компьютер

JOHN_16
Не все родились с пониманием английского. Я смотрел на stack overflow, но кроме того что надо подключать потоки ничего не понял, поэтому я задал вопрос сюда, чтоб меня разъяснили.

Это точно раздел для новичков?

Лучший учитель — это ты сам.

Офлайн

  • Пожаловаться

#4 Сен. 21, 2017 14:02:37

Рекурсия и мой компьютер

Djo0513
Не все родились с пониманием английского.

а есть кто-то, кто родился с пониманием английского?

Отредактировано WoMax (Сен. 21, 2017 14:03:20)

Офлайн

  • Пожаловаться

#5 Сен. 21, 2017 15:07:03

Рекурсия и мой компьютер

> Не все родились с пониманием английского.

Не вижу никаких проблем: http://translate.google.ru/

С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

  • Пожаловаться

#6 Сен. 21, 2017 15:11:40

Рекурсия и мой компьютер

Djo0513 Если вкратце то 0xC00000FD это переполнение стека (stack owerflow)
тут https://msdn.microsoft.com/en-us/library/cc704588.aspx можно посмотреть все коды ошибок корпорации зла MS.
по ссылке на StackOverflow, котороую вам дал JOHN_16, советуют увеличить размер стека.
По той же ссылке рекомендуют использовать threading где этот размер можно указать ручками threading.stack_size() при создании новой нити.
но можете использовать CreateThread из winAPI https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453%28v=vs.85%29.aspx или любое другое решение которое посчитаете приемлимым.

Djo0513
Не все родились с пониманием английского.

Надо бателька стараться, если хотите заниматься програмированием, без этого никак.
ЗЫ да у меня тоже все работает , не вызывая перепонения стека.

==============================
Помещайте код в теги:

Бериегите свое и чужое время.

Отредактировано PEHDOM (Сен. 21, 2017 15:12:57)

Офлайн

  • Пожаловаться
  • Начало
  • » Python для новичков
  • » Рекурсия и мой компьютер

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

Этот код ошибки встречается при выполнении процедур, а процесс завершен с кодом выхода кода -1073741571 (0xC00000FD), программа RAN и RAN. Отказ система

Windows 10。

Stackoverflow рассматривается как переполнение области стекаHow to overcome Stack Size issue with Visual Studio (running C codes with big array)

Ссылка представляет собой решение C ++, вы можете изменить распределение памяти стека или изменить код: Изменить чрезмерные переменные в глобальные переменные.Это не хранится в зоне стека.

В коде Python вы можете использовать глобальную декларацию:

Обновить:

После изменения кода я сообщил о том же ошибке, затем измените ремонт памяти стека в Pycharm:

Помощь-> Найти действие-> Поиск VM->

Изменение -xmx750m в -xmx7500m или другой, сохранить перезапуск Pycharm вступите в силу.

Обновить еще раз:

NND изменился на код, оно свободно, используя новый метод, новый поток настроить пространство стека:

if __name__ == "__main__":
    threading.stack_size(200000000)
    thread = threading.Thread(target=launch())
    thread.start()

Запуск () — это имя метода для начала, я надеюсь, что это последнее обновление.

Примечание:

1.Microsoft Code Code Query (16)

2.x86, X64 Учетная площадь по умолчанию 1 МБ

Я получаю странный код выхода в clion:

код выхода -1073741571 (0xC00000FD)

Это мой код:

int main()
{
std::cin.sync_with_stdio(false);
std::cin.tie(nullptr);

freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);

int n = 0, i = 0, j = 0;
int arr[30007][5];

for (i = 1; i <= 30000; i++)
arr[0][i] = 1;

//...

return 0;
}

Я проверил это и выяснил это из-за этой строки:

int arr[30007][5];

У меня не было проблем в объявление массива размером менее 1.000.000 2 дня назад и сейчас я получаю эту ошибку.
Я ничего не изменил в Clion.

Что я должен делать?

0

Решение

Номер ошибки 0xC00000FD расшифровывается как «переполнение стека» (я полагаю, ваша платформа Windows). Под Windows локальные переменные размещаются в стеке (как и на большинстве других платформ тоже) и int arr[30007][5] довольно большой (30007 * 5 * 4 = 600140 байт), а стеки обычно довольно малы (обычно около 1 Мб, опять же в зависимости от платформы)

У вас есть много вариантов:

  1. использование std::vector вместо необработанных массивов (предпочтительно)
  2. объявить массив как статический (static int arr[30007][5];), то он больше не будет находиться в стеке
  3. увеличить размер стека вашего исполняемого файла. Это очень платформа / слишком зависит.
  4. выделить массив динамически

0

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

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

Not sure what is wrong. I am using PyCharm and it shows no errors. But when I run it I get: Process finished with exit code -1073741571 (0xC00000FD)

import wx
import wx.xrc


class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame(None)
        self.SetTopWindow(self.frame)
        self.frame.Show()
        return True


class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"My List", pos=wx.DefaultPosition, size=wx.Size(500, 400),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)

        self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
        self.SetBackgroundColour(wx.Colour(0, 128, 128))

        myFlexGridSizer = wx.FlexGridSizer(1, 1, 0, 0)
        myFlexGridSizer.SetFlexibleDirection(wx.BOTH)
        myFlexGridSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)

        myBoxGridSizer = wx.BoxSizer(wx.VERTICAL)

        self.headerLabel = wx.StaticText(self, wx.ID_ANY, u"Glucose", wx.Point(-1, -1), wx.DefaultSize, 0)

        self.headerLabel.Wrap(-1)
        self.headerLabel.SetFont(wx.Font(wx.NORMAL_FONT.GetPointSize(), 75, 90, 92, True, wx.EmptyString))

        myBoxGridSizer.Add(self.headerLabel, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)

        mListBoxChoices = [u"Update Data", u"A1c", u"Exit"]
        self.mListBox = wx.ListBox(self, wx.ID_ANY, wx.Point(-1, -1), wx.Size(300, 300), mListBoxChoices, wx.LB_SINGLE)
        self.mListBox.SetFont(wx.Font(12, 75, 90, 90, False, wx.EmptyString))

        myBoxGridSizer.Add(self.mListBox, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5)

        myFlexGridSizer.Add(myFlexGridSizer, 1, wx.EXPAND, 5)

        self.SetSizer(myFlexGridSizer)
        self.Layout()
        self.Centre(wx.BOTH)

        self.mListBox.Bind(wx.EVT_LISTBOX, self.showSelectedItem)

    def __del__(self):
        pass

    def showSelectedItem(self, event):
        wx.MessageBox(event.GetEventObject().GetStringSelection(), "Selected")


app = MyApp(False)
MyFrame.Show()
app.MainLoop()

Being new to python I tried to find the answer but nothing fit to my problem.

Gary

Posts: 3,458

Threads: 101

Joined: Sep 2016

Reputation:
143

What happens if you remove line 56? Your app already creates and shows the frame, so showing it again (and without a root object) seems odd.

Posts: 3,883

Threads: 56

Joined: Jan 2018

Reputation:
307

It could be a PyCharm issue, does it occur if you run the code in an ordinary terminal out of PyCharm?

Posts: 65

Threads: 18

Joined: Dec 2018

Reputation:
0

Jan-10-2019, 11:21 PM
(This post was last modified: Jan-11-2019, 11:50 AM by gehrenfeld.)

Yes, it does.

But I redid the coded so it was more up to date with Python 3.7 and everything now works fine

Thank you

Gary

Просмотров 39.5к. Опубликовано 15 августа, 2018 Обновлено 24 июня, 2019

Как исправить ошибки файловой системы в Windows 10:  если вы столкнулись с ошибкой файловой системы, на вашем жестком диске повреждены файлы Windows или поврежденные сектора. Основная причина этой ошибки, по-видимому, связана с ошибками с жестким диском, и иногда ее можно легко исправить командой chkdsk. Но это не гарантирует исправления этого во всех случаях, поскольку это действительно зависит от конфигурации системы пользователя.

Ошибка файловой системы

Вы можете получить файловую системную ошибку при открытии файлов .exe или при запуске приложений с правами администратора. Вы можете попробовать это, выполнив командную строку с правами администратора, и вы получите сообщение об ошибке «Файловая система». Эта ошибка вызывает UAC, и вы не можете получить доступ к чему-либо, связанному с контролем учетных записей пользователей.

Ошибка файловой системы (-1073741819)

В следующем руководстве рассматриваются проблемы, связанные со следующими ошибками файловой системы:

Ошибка файловой системы (-2147219196) — нажмите сюда что бы перейти к решению данной ошибки
Ошибка файловой системы (-1073741819)
Ошибка файловой системы (-1073545193) 
Ошибка файловой системы (-1073741819) 
Ошибка файловой системы (-2018375670) 
Ошибка файловой системы (-2144926975) 
Ошибка файловой системы (-1073740791)

Если вы получаете ошибку файловой системы (-1073741819), проблема связана с звуковой схемой вашей системы. Странно, не так ли? Ну, вот как перепутали Windows 10, но мы ничего не можем с этим поделать. В любом случае, не тратя никого, давайте посмотрим, как на самом деле исправить ошибку файловой системы в Windows 10 с помощью приведенных ниже шагов по устранению неполадок.

Как исправить ошибки файловой системы в Windows 10

Не забудьте  создать точку восстановления,  если что-то пойдет не так.

Способ 1. Запуск SFC и CHKDSK в безопасном режиме

  1. Нажмите Windows Key + R, затем введите msconfig и нажмите Enter, чтобы открыть Конфигурация системы.

    msconfig 

  2. Переключитесь на вкладку загрузка и установите флажок «Безопасная режим».
    Безопасная режим
    Безопасная режим
  3. Нажмите «Применить», а затем «ОК».
  4. Перезагрузите компьютер и система автоматически загрузится в безопасный режим.
  5. Нажмите клавишу Windows + X, затем нажмите «Командная строка» («Администратор»).
  6. Теперь введите команду и нажмите enter: Команда Sfc Команда Sfc (проверка системных файлов) (проверка системных файлов)
    Sfc /scannow
    sfc /scannow /offbootdir=c: /offwindir=c:windows (Если предыдущая команда не удается)
  7. Откройте команду строку « CMD»  с правами администратора и введите следующую команду и нажмите «Ввод»:
    chkdsk C: /f /r /x
    

    chkdsk

    chkdsk

    Примечание: В приведенной выше команде C: это диск, на котором мы хотим запустить контрольный диск, /f обозначает флаг, который chkdsk разрешает исправлять любые ошибки, связанные с диском, /r искать поврежденные сектора и выполнять восстановление и /x инструктирует контрольный диск для демонтажа диска перед началом процесса.

  8. Он попросит запланировать сканирование при следующей перезагрузке системы, введите Y и нажмите enter.
  9. Дождитесь завершения вышеуказанного процесса, а затем снова снимите флажок «Безопасная загрузка» в «Конфигурация системы».
  10. Перезагрузите компьютер, чтобы сохранить изменения.

Проверка системных файлов SFC и Проверка диска SHKDSK, исправляют «ошибку файловой системы» в Windows, но если нет, то продолжайте следующий метод.

Способ 2. Открыть папку WindowsApps — решение ошибки 2147219196

Этим способом можно исправить ошибка файловой системы 2147219196, обычно она возникает когда пытаетесь открыть документ или фотографию.

Папка WindowsApps нужна для хранения приложений которые скачаны с Магазина Windows Store, но из-за того что к нему нету доступа, приложения не могут запуститься для открытия фотографий.

Вот инструкция как открыть доступ к папке WindowsApps

  1. Откройте проводник или Мой компьютер.
  2. Перейдите в папку C:Program Files, обычно находиться в паке С, но у вас может быть другая буква локального диска.
  3. В верхнем меню нажмите Вид.
  4. Включите Скрытые элементы, поставив галочку как показано на скриншоте.

    Ошибка файловой системы (-2147219196)

  5. Теперь вы сможете увидеть папку  WindowsApps.
  6. Открыть эту папку пока не сможете, так как у вас нет прав.

    WindowsApps

  7. Нажмите правой кнопкой по папке WindowsApps и в контекстном меню выберите Свойства

    WindowsApps

  8. Перейдите во вкладку Безопасность и нажмите Дополнительно.

    Безопасность

  9. Нажмите Изменить.

    Безопасность

  10. В этом окне вам нужно будет написать имя учетной записи, либо почту от Microsoft.

  11. Нажмите Проверить имя, если не возникнут ошибки, то нажмите ОК.
  12. Теперь поставьте галочку напротив Заменить владельца подконтейнеров и объектов

    Заменить владельца подконтейнеров и объектов

  13. Нажмите Ок. Системе начнет менять атрибуты и сменить владельца.
  14. Теперь можете попробовать открыть папку.

Этим способом можно справить Ошибку файловой системы (-2147219196).

Способ 3. Изменение звуковой схемы вашего ПК.

  1. Нажмите на значок громкости на системном трее и выберите Звуки.

    Изменение звуковой схемы вашего ПК

  2. Измените звуковую схему на Без звука или По умолчанию из раскрывающегося списка.

    Измените звуковую схему на Без звука или По умолчанию

  3. Нажмите «Применить».
  4. Перезагрузите компьютер, чтобы сохранить изменения, и это должно устранить ошибки файловой системы в Windows 10.

Способ 4. Задайте тему Windows 10 по умолчанию.

  1. Щелкните правой кнопкой мыши на рабочем столе и выберите «Персонализация».

    Персонализация

  2. Теперь из персонализации выберите «Темы» в меню слева, а затем нажмите «Параметры темы» в разделе «Тема».

    Параметры темы»

  3. Далее выберите Windows 10 в разделе «Темы Windows по умолчанию».

    Темы Windows по умолчанию

  4. Перезагрузите компьютер, чтобы сохранить изменения. Это должно  исправить ошибки файловой системы на вашем ПК, но если нет, то продолжайте.

Способ 5. Создание новой учетной записи пользователя.

Если вы подписаны с учетной записью Microsoft, сначала удалите ссылку на эту учетную запись:

  1. Нажмите клавишу Windows + R, затем введите «ms-settings:,» (без кавычек) и нажмите Enter.
  2. Выберите Учетные записи> Войдите вместо этого с  локальной учетной записью.

    Войдите вместо этого с  локальной учетной записью.

  3. Введите свой пароль учетной записи Microsoft и нажмите «Далее».
  4. Выберите новое имя учетной записи и пароль , затем выберите «Готово» и выйдите из системы.

Создайте новую учетную запись администратора:

  1. Нажмите Windows + I, чтобы открыть «Параметры», а затем «Учетные записи».
  2. Затем перейдите в Семья и другие люди.
  3. Under Другие люди нажимают на  Добавить пользователя для этого компьютера. 

    Добавить пользователя для этого компьютера

  4. Далее укажите имя пользователя и пароль, затем нажмите «Далее».

Затем сделайте новую учетную запись администратором:

  1. Нажмите Windows + I, чтобы открыть «Параметры», а затем «Учетные записи».
  2. Затем перейдите в Семья и другие люди.
  3. Выберите аккаунт, который вы только что создали, и выберите «Изменить тип учетной записи».
  4. Введите тип учетной записи, выберите «Администратор» и нажмите «ОК».

Если проблема по-прежнему сохраняется, попробуйте удалить старую учетную запись администратора:

  1. Перейдите в раздел «Настройки Windows», затем « Аккаунт»> «Семья и другие люди».
  2. Выберите Другие пользователи, выберите старую учетную запись администратора и нажмите Удалить и выберите Удалить учетную запись и данные.
  3. Если вы использовали учетную запись Microsoft для входа ранее, вы можете связать эту учетную запись с новым администратором, выполнив следующий шаг.
  4. В разделе «Настройки Windows»> «Аккаунты» выберите «Войти» с учетной записью Microsoft и введите данные своей учетной записи.

Наконец, вы должны  были исправить ошибку файловой системы в Windows 10,   но если вы все еще придерживаетесь одной и той же ошибки, попробуйте снова запустить команды SFC и CHKDSK из метода 1.

Способ 6: сброс кеша хранилища Windows

  1. Нажмите Windows Key + R, затем введите «Wsreset.exe» и нажмите enter.
    Wsreset.exe
    Wsreset.exe
  2. Когда процесс завершиться, перезагрузите компьютер.

Вот так вы успешно узнали, как исправить ошибки файловой системы в Windows 10, но если у вас все еще есть вопросы относительно этого руководства, не стесняйтесь спрашивать их в разделе комментариев.

n0v140k

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

1

08.04.2022, 12:50. Показов 1710. Ответов 8

Метки нет (Все метки)


Добрый день! пишу код, работа с файлами. СodeBlocks «warning» не выдаёт, но выдаёт «Process returned -1073741571 (0xC00000FD)»… что это значит и что делать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string.h>
#include <ctime>
#include <sstream>
#include <cstdio>
#include <cctype>
#include <windows.h>
 
using namespace std;
int main()
{
    int i, j;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand( time(NULL) );
    int N = rand() % 1001 + 1000;
    ifstream f91, f101;
    int kol_fam = 0, kol_ima = 0;
    f91.open("surnames.txt");
    f101.open("names.txt");
    while( !f91.eof() ){
        string qwe;
        f91 >> qwe;
        kol_fam++;
    }
    f91.close();
        while( !f101.eof() ){
        string qwe;
        f101 >> qwe;
        kol_ima++;
    }
    f101.close();
    ifstream f9, f10;
    f9.open("surnames.txt");
    f10.open("names.txt");
    char fam[kol_fam][60];
    char ima[kol_ima][60];
    string st3, st4;
    for( i = 0; i < kol_fam; i++){
        f9 >> st3;
        int b = st3.size();
        for( j = 0; j < b; j++){
            if(j != 0){
                st3[j] = tolower( st3[j] );
                fam[i][j] = st3[j];
            }
            else fam[i][j] = st3[j];
        }
        st3.clear();
    }
    for( i = 0; i < kol_ima; i++){
        f10 >> st4;
        int b = st4.size();
        for(j = 0; j < b; j++){
            if(j == 0){
                st4[j] = toupper(st4[j]);
                ima[i][j] = st4[j];
            }
            else ima[i][j] = st4[j];
        }
        st4.clear();
    }
    f9.close();
    f10.close();
    ofstream f3;
    string st, st2;
    f3.open("Result_olymp1.txt", ios_base::trunc);
    for( i = 0; i < N; i++){
        int klass = rand() % 3 + 9;
        int shkola = rand() % 100 + 1;
        int n = rand() % kol_fam + 1;
        int n1 = rand() % kol_ima + 1;
        int b1 = rand() % 301;
        int b2 = rand() % 301;
        int b3 = rand() % 301;
        st = fam[n];
        st2 = ima[n1];
        f3 << st << ' ' << st2 << ' ' << klass << ' ' << shkola << ' ' << b1 << ' ' << b2 << ' ' << b3 << endl;
    st.clear();
    st2.clear();
    }
    f3.close();
    return 0;
}

P.S. это вырезка из основного кода(он у меня на 350 строчек), ищю ошибку и поэтому по частям проверяю. на этой части он выдал мне такую ошибку(пишу на CodeBlocks 20.03).
помогите пожалуйста!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

фрилансер

4483 / 3992 / 871

Регистрация: 11.10.2019

Сообщений: 10,516

08.04.2022, 12:56

2

n0v140k, при запуске на отладку где отладчик останавливается ?

а ещё:
1) требуется добавить форматирование
2) добавить скоупы для файлов
3) прекратить использовать eof()
4) …

0

John Prick

2060 / 1592 / 679

Регистрация: 27.07.2012

Сообщений: 4,768

08.04.2022, 12:59

3

4) и такое тоже прекратить

C++
1
2
3
4
int kol_fam, kol_ima;
/* ... */
char fam[kol_fam][60];
char ima[kol_ima][60];

1

фрилансер

4483 / 3992 / 871

Регистрация: 11.10.2019

Сообщений: 10,516

08.04.2022, 13:01

4

да да, инициализацию переменных добавить и открыть для себя вектор ))

0

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

08.04.2022, 13:45

 [ТС]

5

в окне отладчика следующее:
Active debugger config: GDB/CDB debuggerefault
Собрать для гарантирования, что исходники новые
Выбраная цель:
Debug
Adding source dir: C:UsersПользовательDesktopНовая папка1111zzz
Adding source dir: C:UsersПользовательDesktopНовая папка1111zzz
Adding file: C:UsersПользовательDesktopНовая папка1111zzzbinDebug1111zzz.exe
Changing directory to: C:/Users/73B5~1/Desktop/51A2~1/1111zzz/.
Set variable: PATH=.;C:UsersПользовательDesktopCodeBlocksMi nGWbin;C:UsersПользовательDesktopCodeBlocksM inGW;C:ProgramDataOracleJavajavapath;C:Window sSystem32;C:Windows;C:WindowsSystem32wbem;C: WindowsSystem32WindowsPowerShellv1.0;C:Windows System32OpenSSH;C:UsersПользовательAppDataLo calMicrosoftWindowsApps
Запускается отладчик: C:UsersПользовательDesktopCodeBlocksMINGWbin gdb.exe -nx -fullname -quiet -args C:/Users/73B5~1/Desktop/51A2~1/1111zzz/bin/Debug/1111zzz.exe
сделано
Настройки точки прерывания
Название и версия отладчика GNU gdb (GDB) 8.1
Child process PID: 1160
Отладчик завершился со статусом 1;

в окне сборки написано: «Цель уже была достигнута. Nothing to be done (all items are up-to-date).»
я новичок, неумею ещё векторами пользоваться, поэтому через массивы типа char сделал(

блен, вместо смайлика смеющегося там должно быть «:»D»

Добавлено через 38 минут
помогите пожалуйста! я так и не понял, что делать то нужно? что это значит:
» 1) требуется добавить форматирование
2) добавить скоупы для файлов» ?
из-за чего выскакивает ошибка «Process returned -1073741571 (0xC00000FD)»?

0

фрилансер

4483 / 3992 / 871

Регистрация: 11.10.2019

Сообщений: 10,516

08.04.2022, 13:51

6

n0v140k, отладчик разве нигде не остановился? Если нет — это плохо, сложнее искать будет

например, вот тут индекс j может выйти за край массива. Это даже не проверяется

Цитата
Сообщение от n0v140k
Посмотреть сообщение

fam[i][j]

0

1 / 1 / 0

Регистрация: 30.01.2022

Сообщений: 29

08.04.2022, 13:56

 [ТС]

7

тогда так писать?
for(j = 0; j<b && j<60; j++){
/……../
}
?

0

фрилансер

4483 / 3992 / 871

Регистрация: 11.10.2019

Сообщений: 10,516

08.04.2022, 14:02

8

n0v140k, можно и так, но лучше обходиться без магических констант, а использовать переменные. Или всё же лучше вектор

0

zss

Модератор

Эксперт С++

12641 / 10135 / 6102

Регистрация: 18.12.2011

Сообщений: 27,171

08.04.2022, 20:51

9

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <vector>
#include <ctime>
//#include <sstream>
//#include <cstdio>
#include <cctype>
#include <windows.h>
 
using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand((unsigned) time(NULL) );
 
    ifstream f91;
 
    vector<string> fam;
    f91.open("surnames.txt");
    if(!f91)
    {
        cout<<"файл 'surnames.txt' не открылся";
        return 1;
    }
    string qwe;
    while( f91 >> qwe )
        fam.push_back(qwe);
    f91.close();
 
    f91.open("names.txt");
    if(!f91)
    {
        cout<<"файл 'names.txt' не открылся";
        return 1;
    }
    vector<string> ima;
    while( f91 >> qwe )
        ima.push_back(qwe);
    f91.close();
 
    ofstream f3;
    f3.open("Result_olymp1.txt", ios_base::trunc);
    if(!f3)
    {
        cout<<"файл 'Result_olymp1.txt' не открылся";
        return 1;
    }
 
    int N = rand() % 1001 + 1000;
    for(int i = 0; i < N; i++){
        int klass = rand() % 3 + 9;
        int shkola = rand() % 100 + 1;
        int n = rand() % fam.size() + 1;
        int n1 = rand() % ima.size() + 1;
        int b1 = rand() % 301;
        int b2 = rand() % 301;
        int b3 = rand() % 301;
        f3 << fam[n] << ' ' << ima[n1] << ' ' << klass << ' ' 
            << shkola << ' ' << b1 << ' ' << b2 << ' ' << b3 << endl;
    }
    f3.close();
    return 0;
}

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

08.04.2022, 20:51

Помогаю со студенческими работами здесь

Process returned -107. в среде codeblocks как расшифровать ошибку?
Помогите понять какую ошибку выдает? стандарт c99, при уменьшении dz до 0.001 работает но метод…

Ошибка «Process returned -1073741819 (0xC0000005)»
Я только начинаю учиться программировать, и при отладке программы всплывает непонятная мне ошибка…

SFML. Ошибка «Process returned -1073741819»
Доброго времени суток.
Возникла проблема, которую я не понимаю как решить. При запуске…

Необработанное исключение: 0xC00000FD: Stack overflow
Я решаю одну задачу, где происходит перемена значений, при этом у меня переполняется стек, вот код…

Программа падает при работе с буфером с кодом ошибки -1073741571
Написал небольшую программу для перечисления файлов и папок в определённой директории. При…

Как взять title, process, process id активного окна?
Хочу в этом switch, отловить title, process, process id. У меня есть 2 функции
LRESULT CALLBACK…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

I know this question gets asked a lot but in my case it’s a bit wierd. I just got a RTX 3080 and tried to install Tensorflow based on a tutorial I found on reddit. I did everything as described there:
Install Anaconda —> Python 3.8 —> TF-nightly v. 2.5.0 —> Visual Studio C++ —> Cuda 11.1.0 —> cuDNN 8.0.4 —> add path —> restart pc. Everything seems to work at first. I tried following command:

import tensorflow as tf
tf.config.list_physical_devices()

This works without any errors as you can see in the output:

C:Usersloose.condaenvstf2python.exe C:/Users/loose/PycharmProjects/GenerateAutomatedEMail/python/test.py
2021-01-16 00:40:45.043205: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:40:46.676446: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library nvcuda.dll
2021-01-16 00:40:46.699117: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1760] Found device 0 with properties: 
pciBusID: 0000:2d:00.0 name: GeForce RTX 3080 computeCapability: 8.6
coreClock: 1.785GHz coreCount: 68 deviceMemorySize: 10.00GiB deviceMemoryBandwidth: 707.88GiB/s
2021-01-16 00:40:46.699285: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:40:46.713523: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-01-16 00:40:46.713626: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-01-16 00:40:46.717017: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cufft64_10.dll
2021-01-16 00:40:46.718013: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library curand64_10.dll
2021-01-16 00:40:46.725508: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusolver64_10.dll
2021-01-16 00:40:46.728010: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusparse64_11.dll
2021-01-16 00:40:46.728534: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-01-16 00:40:46.728660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1898] Adding visible gpu devices: 0

Process finished with exit code 0

I currently try to train the Seq2Seq model from the TF tutorials. The code is pretty much exactly the same but I use PyCharm instead of Jupyter and I put everything in a class but the code itself is identical. My complete code is availabe in GitHub. When I want to train the model I get the error «Process finished with exit code -1073741571 (0xC00000FD)». But there is no real error shown the program just finishes with this exit code:

C:Usersloose.condaenvstf2python.exe C:/Users/loose/PycharmProjects/GenerateAutomatedEMail/python/train_model.py
2021-01-16 00:50:34.337791: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:50:36.873698: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library nvcuda.dll
2021-01-16 00:50:36.894834: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1760] Found device 0 with properties: 
pciBusID: 0000:2d:00.0 name: GeForce RTX 3080 computeCapability: 8.6
coreClock: 1.785GHz coreCount: 68 deviceMemorySize: 10.00GiB deviceMemoryBandwidth: 707.88GiB/s
2021-01-16 00:50:36.895004: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:50:36.909453: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-01-16 00:50:36.909542: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-01-16 00:50:36.912954: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cufft64_10.dll
2021-01-16 00:50:36.914024: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library curand64_10.dll
2021-01-16 00:50:36.921476: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusolver64_10.dll
2021-01-16 00:50:36.924059: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusparse64_11.dll
2021-01-16 00:50:36.924660: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-01-16 00:50:36.924807: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1898] Adding visible gpu devices: 0
2021-01-16 00:50:36.925280: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-01-16 00:50:36.926213: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1760] Found device 0 with properties: 
pciBusID: 0000:2d:00.0 name: GeForce RTX 3080 computeCapability: 8.6
coreClock: 1.785GHz coreCount: 68 deviceMemorySize: 10.00GiB deviceMemoryBandwidth: 707.88GiB/s
2021-01-16 00:50:36.926418: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1898] Adding visible gpu devices: 0
2021-01-16 00:50:37.388811: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1300] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-01-16 00:50:37.388901: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306]      0 
2021-01-16 00:50:37.388947: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1319] 0:   N 
2021-01-16 00:50:37.389134: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1446] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 7447 MB memory) -> physical GPU (device: 0, name: GeForce RTX 3080, pci bus id: 0000:2d:00.0, compute capability: 8.6)
2021-01-16 00:50:38.006971: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-01-16 00:50:38.586194: I tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Loaded cuDNN version 8004
2021-01-16 00:50:38.709516: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-01-16 00:50:39.312210: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-01-16 00:50:39.313013: I tensorflow/stream_executor/cuda/cuda_bl

as.cc:1838] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.

Process finished with exit code -1073741571 (0xC00000FD)

So I tried to locate the line when the program crashes. I found out the it crashes as soon as I initialize the «BahdanauAttention» class as shown in this picture.

After testing for several hours I can assume/confirm a few things:

  • I can run normal (non tensorflow) code just fine without this error in this venv
  • I do not run out of ram (only 17GB of 32GB ram in use at most)
  • I don’t have any programs open that may cause conflicts (like NVIDIA Broadcast or Jupyter Lab, etc.)

Things I tested to fix the issue:

  • Reinstall Conda
  • Create new venv
  • Reinstall TF as well as all NVIVIDA drivers
  • Try a different Python version (3.7 instead of 3.8)
  • Restarte my pc

I’m sorta out of options at this point. Does anyone have an idea how this problem could be fixed?

I know this question gets asked a lot but in my case it’s a bit wierd. I just got a RTX 3080 and tried to install Tensorflow based on a tutorial I found on reddit. I did everything as described there:
Install Anaconda —> Python 3.8 —> TF-nightly v. 2.5.0 —> Visual Studio C++ —> Cuda 11.1.0 —> cuDNN 8.0.4 —> add path —> restart pc. Everything seems to work at first. I tried following command:

import tensorflow as tf
tf.config.list_physical_devices()

This works without any errors as you can see in the output:

C:Usersloose.condaenvstf2python.exe C:/Users/loose/PycharmProjects/GenerateAutomatedEMail/python/test.py
2021-01-16 00:40:45.043205: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:40:46.676446: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library nvcuda.dll
2021-01-16 00:40:46.699117: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1760] Found device 0 with properties: 
pciBusID: 0000:2d:00.0 name: GeForce RTX 3080 computeCapability: 8.6
coreClock: 1.785GHz coreCount: 68 deviceMemorySize: 10.00GiB deviceMemoryBandwidth: 707.88GiB/s
2021-01-16 00:40:46.699285: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:40:46.713523: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-01-16 00:40:46.713626: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-01-16 00:40:46.717017: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cufft64_10.dll
2021-01-16 00:40:46.718013: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library curand64_10.dll
2021-01-16 00:40:46.725508: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusolver64_10.dll
2021-01-16 00:40:46.728010: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusparse64_11.dll
2021-01-16 00:40:46.728534: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-01-16 00:40:46.728660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1898] Adding visible gpu devices: 0

Process finished with exit code 0

I currently try to train the Seq2Seq model from the TF tutorials. The code is pretty much exactly the same but I use PyCharm instead of Jupyter and I put everything in a class but the code itself is identical. My complete code is availabe in GitHub. When I want to train the model I get the error «Process finished with exit code -1073741571 (0xC00000FD)». But there is no real error shown the program just finishes with this exit code:

C:Usersloose.condaenvstf2python.exe C:/Users/loose/PycharmProjects/GenerateAutomatedEMail/python/train_model.py
2021-01-16 00:50:34.337791: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:50:36.873698: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library nvcuda.dll
2021-01-16 00:50:36.894834: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1760] Found device 0 with properties: 
pciBusID: 0000:2d:00.0 name: GeForce RTX 3080 computeCapability: 8.6
coreClock: 1.785GHz coreCount: 68 deviceMemorySize: 10.00GiB deviceMemoryBandwidth: 707.88GiB/s
2021-01-16 00:50:36.895004: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-01-16 00:50:36.909453: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-01-16 00:50:36.909542: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-01-16 00:50:36.912954: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cufft64_10.dll
2021-01-16 00:50:36.914024: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library curand64_10.dll
2021-01-16 00:50:36.921476: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusolver64_10.dll
2021-01-16 00:50:36.924059: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusparse64_11.dll
2021-01-16 00:50:36.924660: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-01-16 00:50:36.924807: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1898] Adding visible gpu devices: 0
2021-01-16 00:50:36.925280: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-01-16 00:50:36.926213: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1760] Found device 0 with properties: 
pciBusID: 0000:2d:00.0 name: GeForce RTX 3080 computeCapability: 8.6
coreClock: 1.785GHz coreCount: 68 deviceMemorySize: 10.00GiB deviceMemoryBandwidth: 707.88GiB/s
2021-01-16 00:50:36.926418: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1898] Adding visible gpu devices: 0
2021-01-16 00:50:37.388811: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1300] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-01-16 00:50:37.388901: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306]      0 
2021-01-16 00:50:37.388947: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1319] 0:   N 
2021-01-16 00:50:37.389134: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1446] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 7447 MB memory) -> physical GPU (device: 0, name: GeForce RTX 3080, pci bus id: 0000:2d:00.0, compute capability: 8.6)
2021-01-16 00:50:38.006971: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-01-16 00:50:38.586194: I tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Loaded cuDNN version 8004
2021-01-16 00:50:38.709516: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-01-16 00:50:39.312210: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-01-16 00:50:39.313013: I tensorflow/stream_executor/cuda/cuda_bl

as.cc:1838] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.

Process finished with exit code -1073741571 (0xC00000FD)

So I tried to locate the line when the program crashes. I found out the it crashes as soon as I initialize the «BahdanauAttention» class as shown in this picture.

After testing for several hours I can assume/confirm a few things:

  • I can run normal (non tensorflow) code just fine without this error in this venv
  • I do not run out of ram (only 17GB of 32GB ram in use at most)
  • I don’t have any programs open that may cause conflicts (like NVIDIA Broadcast or Jupyter Lab, etc.)

Things I tested to fix the issue:

  • Reinstall Conda
  • Create new venv
  • Reinstall TF as well as all NVIVIDA drivers
  • Try a different Python version (3.7 instead of 3.8)
  • Restarte my pc

I’m sorta out of options at this point. Does anyone have an idea how this problem could be fixed?

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

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

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

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

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

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

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

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

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

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

#include <iostream>
#include <fstream>
#include <conio.h>
#include <random>
#include<math.h>
#include <Eigen/Dense>
#include<time.h>
#define pi atan(1) * 4
using namespace std;
using namespace Eigen;
int Poisson(int N)
{
int n=1;
float x,y,k=0;
do
{
x=(float)rand()/RAND_MAX;
y = -log(x);
k=k+y;
n=n+1;     //n increases for each random number generated
}
while(k<N);
return n;
}
int sumrow(MatrixXd A,int row, int col_len)
{
int sum=0;
for(int i=0;i<col_len;i++)
{
sum=sum+A(row,i);
}
return sum;
}
void generate_D(MatrixXd A, int dim, MatrixXd D)
{
for(int x=0;x<dim;x++)
{
for(int y=0;y<dim;y++)
{
if(x==y)
{
D(x,y)=1/sqrt(sumrow(A,x,y));
}
else
{ D(x,y) =0;  }
}
}
}
void sqmatrix_multiply(MatrixXd A,MatrixXd B,int dim, MatrixXd C)
{
for(int i=0;i<dim;i++)
{
for(int j=0;j<dim;j++)
{
for(int k=0;k<dim;k++)
{
C(i,j) = C(i,j) + (A(i,k)*B(k,j));
}
}
}
}
void generate_B(MatrixXd A, int dim, MatrixXd B)
{
MatrixXd D;
MatrixXd C, inter1, inter2;
generate_D(A,dim,D);
sqmatrix_multiply(A,D,dim,inter1);
sqmatrix_multiply(D,C,dim,inter2);
for(int i=0;i<dim;i++)
{
for(int j=0;j<dim;j++)
{
if(i==j)
{
B(i,j) = 1 - inter2(i,j);
}
else
{
B(i,j) = 0 - inter2(i,j);
}

}
}
}
int main()
{
srand(time(NULL));
double X,Y,x,y,a,b,L[5000][5000],M[5000][5000];
MatrixXd A, B;
for(int i=0; i<5000;i++)
{   L[i][i]=0;  M[i][i]=0;   }
int N, I;
cout<<"Enter your number and iterations";
cin>>N>>I;
int P[5000];
for(int i=0; i<I; i++)
{
P[i]=Poisson(N);
}
for(int k=0; k<I; k++)
{
for (int j=0;j<P[k];j++)
{
A:
X=(float)rand()/RAND_MAX;
Y=(float)rand()/RAND_MAX;
x=sqrt(X);
y = 2*(pi)*Y;
a=x*cos(y);
b=x*sin(y);
if((a*a)+(b*b)>1)
{
goto A;
}
L[k][j] = a; M[k][j] = b;
}
}
for(int a=0;a<I;a++)
{
for(int a1=0;a1<P[a];a1++)
{
for(int a2=0;a2<P[a];a2++)
{
if(a1==a2)
{
A(a1,a2)=0;
}
else
{
if(((L[a][a1]-L[a][a2])*(L[a][a1]-L[a][a2]))+((M[a][a1]-M[a][a2])*M[a][a1]-M[a][a2]) < 1)  //distance formula
{
A(a1,a2)=1;
}
else
{
A(a1,a2)=0;
}
}
}
}
generate_B(A,P[a],B);
EigenSolver<MatrixXd> b(B,false);
cout<<a+1<<" Eigen values are: n "<<b.eigenvalues()<<"n";
}
return 0;
}

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

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

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

0

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

As you can see in Window’s 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

baby* babies = new baby[50000];
// Your code here
delete[] babies;

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:

#include <vector>
...
std::vector<baby> babies(50000);

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).

I added your code with some modifications of mine:

#include <vector>
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream fin("input.txt");

struct baby
{
    string gender;
    string name;
    int cnt = 0;
};

bool cmp(const baby& a, const baby& b)
{
    if (a.cnt > b.cnt) {
        return true;
    }
    return a.cnt == b.cnt && a.name < b.name;
}

bool are_equal(const baby& lhs, const baby& rhs)
{
    return lhs.gender == rhs.gender && lhs.name == rhs.name;
}

int howmany(const std::vector<baby>& babies, int i)
{

    int cnt = 0;
    for (int j = 0; j < babies.size(); j++)
    {
        if (babies[i].name == babies[j].name && babies[i].gender == babies[j].gender)
        {
            cnt++;
        }
    }
    return cnt;
}

void getData(std::vector<baby>& babies)
{
    for (int i = 0; i < babies.size(); i++)
    {
        fin >> babies[i].gender >> babies[i].name;
    }
}

int removeDuplicates(std::vector<baby>& babies)
{
    int j = 0;
    for (int i = 0; i < babies.size() - 1; i++)
    {
        if (babies[i].name != babies[i + 1].name) {
            babies[j++] = babies[i];
        }
    }
    babies[j++] = babies.back();
    return j;
}

void remove_duplicates_improved(std::vector<baby>& babies)
{
    babies.erase(babies.begin(), std::unique(babies.begin(), babies.end(), are_equal));
}

int main()
{
    int n;
    int top;
    fin >> n >> top;
    std::vector<baby> babies(n);
    getData(babies);
    for (int i = 0; i < n; i++)
    {
        babies[i].cnt = howmany(babies, i);
    }
    sort(babies.begin(), babies.begin() + n, cmp);

    remove_duplicates_improved(babies);
    int cnt = 0;
    for (int i = 0; i < babies.size(); i++)
    {
        if (cnt < top)
        {
            if (babies[i].gender == "F")
            {
                cout << babies[i].name << " ";
                cnt++;
            }
        }
    }
    cout << endl;
    cnt = 0;
    for (int i = 0; i < babies.size(); i++)
    {
        if (cnt < top)
        {
            if (babies[i].gender == "M")
            {
                cout << babies[i].name << " ";
                cnt++;
            }
        }
    }
    return 0;
}

Good luck

Пишу программу на C++ без использования никаких include’ов кроме . Когда делаю ввод (код ниже) переменная l считывается нормально, однако сразу после ввода переменной r программа заканчивает свое действие(хотя должна продолжать) и выдает, что закончена с кодом 1073741571 (0xC00000FD), причем это выводится НЕ как ошибка.

int l;
int r;
cin >> l;
cin >> r;

p.s код приведен неполный, при надобности могут скинуть всю программу
p. p. s ссылка на полный код — https://pastebin.com/cL49mJnh
p. p. p. s ввожу:
5
2 2 2 1 5
2
2 3
2 5


  • Вопрос задан

    02 мая

  • 140 просмотров

Пригласить эксперта

cin >> r; // этот ввод пролетает так как в r попадает n от предыдущего ввода
l—;
r—; // ошибка скорей всего здесь — не понятно что он декрементирует

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

А так вижу несколько ошибок. Обычно дерево отрезков реализуют только на массиве длинной в степень двойки. Добейте a нулями, до степени двойки. И тогда массив t может быть только в 2 раза больше a, а не в 4.

Далее, при реализации get надо, если отрезок вершины лежит внутри отрезка запроса, возвращать t[v]. в противном случае надо запускаться слева и справа, но тольо если запрос торчит в нужную сторону. Вы не запускаетесь от левого сына, если l > m, например. Можно считать значение 0, если рекурсивного вызова нет. В конце берете gcd двух половинок.

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

В линуксах надо включить создание coredump в ОС, выполнить программу, получить файл coredump и проанализировать его в gdb. Схема анализа кода та же, что под виндой.

Возможно у вас выход за пределы массива. При анализе внимательно смотрите на используемые индексы и размеры выделенного вектора к которому идет обращение.

Результаты вашего анализа можете скинуть сюда.


  • Показать ещё
    Загружается…

Сбер

Нижний Новгород

от 170 500 ₽

03 июн. 2023, в 18:21

1500 руб./за проект

03 июн. 2023, в 16:39

2000 руб./за проект

03 июн. 2023, в 16:28

1800 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • 1073740791 ошибка при майнинге
  • 1073548784 номер ошибки
  • 1072 код ошибки камаз
  • 1070 код ошибки

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии