3 / 3 / 2
Регистрация: 15.09.2012
Сообщений: 86
1

Исправление ошибок в программе

08.12.2012, 20:26. Показов 736. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Занимаюсь написанием программы. В ходе написания возник следующий вопрос. В ходе выполнения нижеприведенного кода выдается ошибка:
Необработанное исключение в "0x0f3957aa (msvcr100d.dll)" в "laba7.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefee2".
Причем программа выполняется нормально, все выводится, но компилятор выдает вышеприведенную ошибку. В чем ошибка?
Вот код программы:
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include "math.h"
#include <iomanip>
 
using namespace std;
 
 
int main() 
{
    setlocale(0,"rus");
 
    int str, stl;
    int **matr;
 
    // ---- Ввод количества строк и столбцов матрицы ---- //
    cout<<"Введите количество строк матрицы: ";
    cin>>str;
 
    cout<<"Введите количество столбцов матрицы: ";
    cin>>stl;
 
    // --------- Выделение динамической памяти --------- //
    matr = new int * [str]; 
    for (int i=0; i<str; i++)
    {
        matr[i] = new int [stl]; 
    }
 
    // ------------ Ввод элементов массива ------------ //
    for (int i=0; i<str; i++)
    {
        for (int j=0; j<stl; j++)
        {
            cout<<"Введите элемент ["<<i<<"]["<<j<<"] матрицы: ";
            cin>>matr[i][j];
        }
    }
 
    // ---------------- Выводим матрицу --------------- //
    cout<<"Выводим матрицу:"<<endl<<endl;
    for (int i=0; i<str; i++)
    {
        for (int j=0; j<stl; j++)
        {
            cout<<matr[i][j];
        }
    }
 
    // ------------- Освобождение памяти ------------- //
    for (int i=0; i<str; i++)
    {
        delete matr [i];
        delete [] matr;
    }
 
 
    system ("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2012, 20:26
Ответы с готовыми решениями:

Исправление ошибок в программе
Здравствуйте! Помогите пожалуйста исправит ошибки в программе. Программа была написана по...

Исправление ошибок в программе
Помогите исправить ошибки в программе, буду очень благодарен) #include &lt;math.h&gt; #include...

Исправление ошибок в программе
vector&lt;int&gt;v; int x; while(cin&gt;&gt;x) v.push_back(x); for(int i=0; i&lt;v.size(); ++i); cout &lt;&lt; &quot;v...

Исправление ошибок в многофайловой программе
Помогите исправить ошибки в интересной программе по виртуальной работе лифтов. В программе имеется...

4
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
08.12.2012, 20:30 2
Цитата Сообщение от Ultran Посмотреть сообщение
for (int i=0; i<str; i++) {
delete matr [i];
delete [] matr;
}
очевидно, что должно быть

C++
1
2
3
4
5
    for (int i=0; i<str; i++)
    {
        delete matr [i];
    }
    delete [] matr;
негоже многократно делать delete для одного и того же указателя, да еще и потом использовать этот удаленный указатель для доступа к массиву
0
3 / 3 / 2
Регистрация: 15.09.2012
Сообщений: 86
08.12.2012, 20:41  [ТС] 3
Цитата Сообщение от yekka Посмотреть сообщение
негоже многократно делать delete для одного и того же указателя, да еще и потом использовать этот удаленный указатель для доступа к массиву
А как будет правильно?
Немного не понял Вас. Поясните пожалуйста.

Добавлено через 6 минут
C++
1
2
3
4
for (int i=0; i<str; i++)
    {
        delete matr [i];
    }
Т.е. вот так будет правильно, верно?
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
08.12.2012, 20:43 4
я дюже код не читал, но судя по всему правильно будет
C++
1
2
3
4
5
    for (int i=0; i<str; i++)
    {
        delete [] matr [i];
    }
    delete [] matr;
0
3 / 3 / 2
Регистрация: 15.09.2012
Сообщений: 86
08.12.2012, 20:46  [ТС] 5
Цитата Сообщение от yekka Посмотреть сообщение
я дюже код не читал, но судя по всему правильно будет
C++
1
2
3
4
5
    for (int i=0; i<str; i++)
    {
        delete [] matr [i];
    }
    delete [] matr;
Все, я понял свою ошибку!
Спасибо Вам большое, не досмотрел просто.
0
08.12.2012, 20:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2012, 20:46
Помогаю со студенческими работами здесь

Исправление ошибок в C++
Всем доброго времени суток! У меня появился такой вопрос, есть ли в Visual Studio 8 или 10 такая...

исправление ошибок
//funkcijas1 #include &lt;iostream&gt; using namespace std; int main() { int i,...

Исправление ошибок
Есть задание : Во введенной строке заменить все пробелы на запятые, а запятые на точки. Посчитать...

Исправление ошибок
Какие ошибки есть в следующем коде? for (int i =О: i &lt;= phrase.size(): ++i) { cout «...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru