Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149

Память не может быть прочитана!

25.08.2011, 01:34. Показов 1445. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема возникает при копировании одного массива в другой. Я вроди просмотрел и размерности вроди совпадают, но может быть я что то упустил, какую нибудь мелочь и поэтому возникает ошибка. Прошу помочь выяснить в чем конкретно проблема.

Входные параметры функции: n=7, m=2, matr[][2]={{1,2},{0,3},{3,4},{2,6},{5,-1},{-1,-1},{5,-1}}, a={0,1,2,3,4,5,6}, Array={{-1,-1,-1,-1,-1,-1,-1},{0,1,2,3,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{5,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{4,6,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},}, fora=1, forArray=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
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
void part2(int n, int m, int matr[][2], int** a, int** Array, int& fora, int forArray)
{
int d2,d1,p1,p2,y1,y2,q1,q2;
 
for (int i=0; i<fora; i++) delete [] a[i];  //удаляем
delete [] a;                                //массив А
fora=forArray;                //новая расзмерность массива А ровна старой размерности массива Array
a = new int * [fora];                     //создаем
for (int i=0; i<fora; i++) a[i]=new int [n]; //новый массив А
 
for(int i=0; i<forArray; i++)   //копируем
{                               //элементы массива Array в
   for(int j=0; j<n; j++)       //массиву А
   {
   a[i][j]=Array[i][j];
   }
}
for (int i=0; i<forArray; i++) delete [] Array[i];  //удаляем
delete [] Array;                                    //массив Аrray
 //------------------------------
for(int i=0; i<n; i++)
{
   for(int j=0; j<m; j++)
   {
      if(j==0)
      {
         d1=matr[i][j];
      }
      else
      {
         d2=matr[i][j];
      }
   }
   p1=serchposition(d1,a,fora,n);
   p2=serchposition(d2,a,fora,n);
   for(int x=i+1; x<n; x++)
   {
      for(int y=0; y<m; y++)
      {
         if(y==0)
         {
            y1=matr[x][y];
         }
         else
         {
            y2=matr[x][y];
         }
      }
      q1=serchposition(y1,a,fora,n);
      q2=serchposition(y2,a,fora,n);
      if((p1==q1)&&(p2==q2))
      {
         forArray=forArray+1;
         Array = new int * [forArray];                        //создаем
         for (int i=0; i<forArray; i++) Array[i]=new int [n]; //новый массив Аrray
         for(int k=0; k<forArray; k++)
         {
            for(int z=0; z<n; z++)
            {
               Array[k][z]=-1;
            }
         }
         funk1(n,fora,i,x,Array,a);    
      }
   }
      for (int i=0; i<fora; i++) delete [] a[i];  //удаляем
   delete [] a;                                //массив А
   fora=forArray;                //новая расзмерность массива А ровна старой размерности массива Array
   a = new int * [fora];                     //создаем
   for (int i=0; i<fora; i++) a[i]=new int [n]; //новый массив А
 
   for(int i=0; i<forArray; i++)   //копируем
   {                               //элементы массива Array в
      for(int j=0; j<n; j++)       //массиву А
      {
      a[i][j]=Array[i][j];    //--------------------ВОТ ТУТ РУГАЕТСЯ------------------------------
      }
   }
 
   for (int i=0; i<forArray; i++) delete [] Array[i];  //удаляем
   delete [] Array;                                    //массив Аrray
}
//--------------------------------------
         cout<<'\n';            cout<<'\n';
 
 
 
bool prov;
cout<<"---------------------------------------------"<<'\n';
int o=1;
for(int i=0; i<fora; i++)
{
   prov=proverka(i,n,a);
   if(prov==true)
   {
   cout<<"class"<<o<<"  ";
      for(int j=0; j<n; j++)
      {
         if(a[i][j]!=-1)
         {
         cout<<a[i][j]<<" ";
         }
      }
      cout<<'\n';
      o++;
   }
}
}
 
//---------------------------------------------------------------------------
int serchposition(int d, int** a, int fora, int n)
{
   for(int i=0; i<fora; i++)
   {
      for(int j=0; j<n; j++)
      {
         if(a[i][j]==d)return i;
      }
   }
return 1000;
}
//---------------------------------------------------------------------------
void funk1(int n, int fora, int i, int x, int** Array, int**a)
{
         for(int i1=0; i1<fora; i1++)    //вместо fora было forArray-1
         {
            for(int j1=0; j1<n; j1++)
            {
               if(a[i1][j1]==i || a[i1][j1]==x){Array[i1][j1]=-1;}
               else{Array[i1][j1]=a[i1][j1];}
               Array[fora][0]=i;
               Array[fora][1]=x;
            }
         }
}
//---------------------------------------------------------------------------
bool proverka (int i, int n, int** a)          //проверка на наличие подкласса при выводе
{                                              //строки со всеми (-1) возвращают значение
bool prov=true;                                //FALSE
    for(int y=0; y<n; y++)
      {
      if(a[i][y]!=-1)
        {
        prov=true;
        return prov;
        }
      else
        {
        prov=false;
        return prov;
        }
      }
return prov;
}
//---------------------------------------------------------------------------
Вот скрин с ошибкой
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2011, 01:34
Ответы с готовыми решениями:

Память не может быть прочитала
Здравствуйте, вот есть код: struct Dyn{ Syt select; Dyn* next; }; ............

По каким причинам память не может быть выделена динамически?
Что это могут быть за причины?

Ошибка "Память не может быть read"
При вводе кол-ва учеников больше 2 ух выдаёт после ввода такую ошибку. Вот код: #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; ...

8
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.08.2011, 01:56
напиши что и куда копируешь(опиши аргументы функций), а то спагетти слиплись
0
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
25.08.2011, 17:48  [ТС]
Восле всяческого рода преобразований указонных в коде до надписи "//ВОТ ТУТ РУГАЕТСЯ", поэлементно копируются элементы массива "Array" в массив "a".

Добавлено через 49 секунд
а аргументы те же что и параметры.

Добавлено через 14 часов 13 минут
Плз не сочтите за навящивость но срочно нужна помощь
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
25.08.2011, 17:55
Ну а чем тебе помочь, если в функции сам чёрт ногу сломит?
Вот например, в строках 18 и 19 массив Array удаляется.
Дальше, в строках 51—64, в принципе, наверное создаётся. А есть уверенность, что создаётся? А если создаётся, то есть уверенность, что только один раз?
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.08.2011, 17:57
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
delete [] Array[i]; *//удаляем
delete [] Array; * * * * * * * * * * * * * * * * * *//массив Аrray
- зачем это делать ведь судя из твоего топика

Цитата Сообщение от gr_8_zizu Посмотреть сообщение
Array={{-1,-1,-1,-1,-1,-1,-1},{0,1,2,3,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{5,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{4,6,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},}
- он статический...

Добавлено через 54 секунды
gr_8_zizu, давай весь код, если нужна оперативность
1
Заблокирован
25.08.2011, 18:46
Чтобы быстрей найти ошибку, вставьте в свою функцию part2 печать своего массива Array точно также, как вы это делаете с помощью циклов


C++
1
2
3
4
5
6
7
8
for(int i=0; i<forArray; i++)
{
   for(int j=0; j<n; j++) 
   {
       printf( "%d; ", Array[i][j] );
   }
   printf( "\n" );
}
И будет ясно, проблема в вашем массиве Array, или еще в чем-то.
1
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
25.08.2011, 20:14  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- зачем это делать ведь судя из твоего топика

- он статический...

Добавлено через 54 секунды
gr_8_zizu, давай весь код, если нужна оперативность
Массив Array не статический его я просто в функцию передаю, а там до етого момента еще очень много кода и я не стал кидать его что бы не запаривать вам мозги не нужным кодом. В связи с этим просто написал параметры которые будут переданы для конкретного примера.

Добавлено через 1 минуту
Цитата Сообщение от Сыроежка Посмотреть сообщение
Чтобы быстрей найти ошибку, вставьте в свою функцию part2 печать своего массива Array точно также, как вы это делаете с помощью циклов


C++
1
2
3
4
5
6
7
8
for(int i=0; i<forArray; i++)
{
   for(int j=0; j<n; j++) 
   {
       printf( "%d; ", Array[i][j] );
   }
   printf( "\n" );
}
И будет ясно, проблема в вашем массиве Array, или еще в чем-то.
это уже делал, проблема с массивом Array все же была, вы правы.
0
Заблокирован
25.08.2011, 20:16
Так вы не сделали, что я сказал? Следовало бы сделать!

Я также обратил внимание, что в функции параметр int& fora объявлен по ссылке. Так что вполне возможно, если эта функция вызывается неоднократно, что у вас значение этого аргумента не то, что вы предполагаете, при следующем вызове функции.
0
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
25.08.2011, 20:17  [ТС]
Всем спасибо. Уже разобрался с ошибкой. Дело было в том что массив Array создавался только в том случае когда p1==q1 и p2==q2, а дальше нужно было копировать массив Array в массив а. Так вот если не выполнялось бы условие p1==q1 и p2==q2 то массив не создавался бы, но тем не менее нада было копировать его в массив а. А так как массив Array был удален, а создан не был, выдавалась ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2011, 20:17
Помогаю со студенческими работами здесь

Память не может быть "written"
Помогите найти ошибку в следующем коде: На этапе вхождения в функцию &quot;vvod_vseh&quot;, а именно при вводе первой фамилии - выскакивает ошибка...

нераспознанная версия: не может быть прочитана
здравствуйте . подскажите что делать с ошибкой. мне присылают по скайпу файлы dwg и при открытии из скайпа и из папки скайпа выдаёт...

Память не может быть read
Заходил на один из часто посещаемых сайтов по несколько раз на дню. Расположен он на бесплатном хостинге, укоз, черт бы его побрал, что ли....

Память не может быть Read
загружаю игру, начинаются титры и БАЦ! вылетает ошибка. процесс XXXXXXXX обратился к памяти XXXXXXX память не может быть Read. что делать?!

Память не может быть read
Запускаю любое приложения, вибивает окно з ошибкой &quot;память не может бить read&quot; и какието цифри подскажите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru