Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 24.11.2019
Сообщений: 5

Вызвано исключение: нарушение доступа для чтения. _Pnext было 0xCCCCCCD0

24.11.2019, 21:24. Показов 7446. Ответов 9

Студворк — интернет-сервис помощи студентам
Написал код крестиков-ноликов по методу альфа-бета обрезки. Но при выполнении рекурсии, возникает ошибка 0xCCCCCCD0,когда функция пытается вернуть значение. Не могу понять в чем заключается ошибка. Прикладываю часть кода где возникает ошибка,если быть точнее то в функции minimax,когда код доходит до return alpha или beta. Так же прикладываю скриншот ошибки.

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
87
88
89
90
91
92
93
94
95
96
97
98
int minimax(bool isMax, int alpha, int beta, char marker)
    {
        
        string status = victorycheck(marker);
        if (status == "First win")
        {
            return 10;
        }
        else if( status == "Second win")
        {
            return -10;
        }
        else if (status == "tie")
        {
            return 0;
        }
        
        if (isMax)
        {
            int best = -1000000;
            for (int i = 0; i < stroka; i++)
            {
                for (int j = 0; j < stolb; j++)
                {
                    if (massiv[i][j] == '.')
                    {
                        massiv[i][j] = ComputerMarker;
                        int val = minimax(!isMax, alpha ,beta,ComputerMarker);
                        massiv[i][j] = '.';
                        best = max(best,val);
                        alpha = max(alpha,best);
                        if (beta <= alpha)
                        {
                            return alpha;
                        }
                    }
                }
            }
            return alpha;
        }
        else 
        {
            int best = 1000000;
            for (int i = 0; i < stroka; i++)
            {
                for (int j = 0; j < stolb; j++)
                {
                    if (massiv[i][j] == '.')
                    {
                        massiv[i][j] = YouMarker;
                        int val = minimax(!isMax, alpha, beta,YouMarker);
                        massiv[i][j] = '.';
                        best = min(best, val);
                        beta = min(beta, best);
                        if (beta >= alpha)
                        {
                            return beta;
                            break;
                        }
                    }
                }
            }
            return beta;
        }
    }
    tuple<int,int> alphabeta()
    {
        int bestval = -1000000;
        int movei = -1;
        int movej = -1;
        for (int i = 0; i < stroka; i++)
        {
            for (int j = 0; j < stolb; j++)
            {
                if (massiv[i][j] == '.')
                {
                    massiv[i][j] = ComputerMarker;
                    bool ter = false;
                    int moveval = minimax(ter, -1000000, 1000000,YouMarker);
                    massiv[i][j] = '.';
                    if (moveval >= bestval)
                    {
                        bestval = moveval;
                        movei = i;
                        movej = j;
                    }
                }
            }
        }
        return make_tuple(movei,movej);
    }
void Player2()
    {
        int idx;
        int jdx;
        tie(idx, jdx) = alphabeta();
        massiv[idx][jdx] = '0';
    }
Миниатюры
Вызвано исключение: нарушение доступа для чтения. _Pnext было 0xCCCCCCD0  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2019, 21:24
Ответы с готовыми решениями:

Вызвано исключение: нарушение доступа для чтения. this было 0xCDCDCDCD
Есть у меня код со структурой с динамическими массивами внутри. Через клаву я ввожу данные. И получается, что &quot;subjects&quot; я могу...

Вызвано исключение: нарушение доступа для чтения. s было 0x1110112
Товарищи форумчане, нужна ваша помощь! (Для простоты объяснения прикреплю скрин) Насколько я понимаю, проблема заключается в том,...

Ошибка Вызвано исключение: нарушение доступа для чтения. first было nullptr
При запуске появляется ошибка &quot;Вызвано исключение: нарушение доступа для чтения. first было nullptr&quot;. #include &lt;iostream&gt; ...

9
фрилансер
 Аватар для Алексей1153
6472 / 5687 / 1131
Регистрация: 11.10.2019
Сообщений: 15,167
24.11.2019, 21:38
для начала стоит проверить, что некие 'stroka', 'stolb' не вылазят за края некоего 'massiv'

чем являются все три идентификатора - телепаты не подсказали

Добавлено через 57 секунд
ну и насчёт остановки рекурсии minimax тоже выяснить
0
Модератор
Эксперт С++
 Аватар для zss
13778 / 10971 / 6491
Регистрация: 18.12.2011
Сообщений: 29,257
24.11.2019, 21:39
Цитата Сообщение от vansir Посмотреть сообщение
tie(idx, jdx) = alphabeta();
А, часом, idx,jdx не надо инициализировать?
0
0 / 0 / 0
Регистрация: 24.11.2019
Сообщений: 5
24.11.2019, 21:45  [ТС]
massiv -это массив значений(X- шаги игрока, 0- шаги компьютера и . -пустые клетки,куда еще не сходили). Stroka и Stolb - это размер массива,где stroka-кол-во строк, а stolb- кол-во столбцов. За пределы массива не выходят.
0
фрилансер
 Аватар для Алексей1153
6472 / 5687 / 1131
Регистрация: 11.10.2019
Сообщений: 15,167
24.11.2019, 21:48
zss, tie работает со ссылками

Добавлено через 2 минуты
vansir, вполне возможно, что косяк и не в этой процедуре
1
0 / 0 / 0
Регистрация: 24.11.2019
Сообщений: 5
24.11.2019, 21:52  [ТС]
А в чем еще может проблема? могу приложить полный код программы.
0
фрилансер
 Аватар для Алексей1153
6472 / 5687 / 1131
Регистрация: 11.10.2019
Сообщений: 15,167
24.11.2019, 21:59
Цитата Сообщение от vansir Посмотреть сообщение
А в чем еще может проблема
да в чём угодно, в любой ошибке
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
24.11.2019, 22:09
А посмотреть в стек вызовов после падения, расставить брейкпойнты в подозрительных местах и.т.д... не судьба?
Вот честно, поражают такие школьники С++ и студенты, которые чуть пройдя стадию хеллоуворлда и сортировки пузырьком начинают писать программы вроде как свои, и вроде как даже сложные, но совершенно наугад! И об отладке не знают ничего, например!
0
0 / 0 / 0
Регистрация: 24.11.2019
Сообщений: 5
25.11.2019, 09:20  [ТС]
Kuzia domovenok,спасибо за ваш комментарий. Но я проходил много раз отладкой по этому коду,я просто не понимал в чем заключается суть этой проблемы. Поэтому и написал на форум.

Добавлено через 4 минуты
Спасибо вам большое,вы были правы проблема была не в этой процедуре, а в функции victorycheck в которой я не вернул значение при том случае,когда пока еще никто не победил.
0
фрилансер
 Аватар для Алексей1153
6472 / 5687 / 1131
Регистрация: 11.10.2019
Сообщений: 15,167
25.11.2019, 09:22
vansir, Kuzia domovenok говорит о том, что на скрине - остановка по исключению в глубинах реализации контейнеров, но тебе нужно открыть окно со стеком вызовов и по нему отмотать указатель команд до твоего кода. В той точке посмотреть значения переменных и содержимое контейнера, там и разбираться
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2019, 09:22
Помогаю со студенческими работами здесь

Вызвано исключение: нарушение доступа для чтения. **pline** было 0x1C47112
Здравствуйте! Хотелось бы обратиться со следующей проблемой. &quot;Вызвано исключение: нарушение доступа для чтения. **pline** было...

Вызвано исключение: нарушение доступа для чтения. **_Pnext** было 0x92DE94
Здраствуйте нужнаюсь в ваших наставлениях у кого на это есть время. При попытке вывести данные из файла, происходин данная ошибка. ...

Вызвано необработанное исключение: нарушение доступа для чтения. a было 0x34F4A7AE
Исключение в функции Drow_ship. Как это починить? #include &lt;iostream&gt; #include &lt;ctime&gt; #include&lt;iomanip&gt; #include&lt;string&gt; ...

Ошибка: Вызвано исключение: нарушение доступа для чтения. print было nullptr
Здравствуйте, практикуясь с задание по односвязному списку застрял на непонятной для меня ошибки на этапе отладки. Несколько часов уже...

Выскакивает ошибка: Вызвано исключение: нарушение доступа для чтения. c было 0x1D83F5A
Привет всем. Дали задание: ввести из файла в массив элементы, кол-во задается пользователем, затем отсортировать их методом подсчета. Блок...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru