Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ultran
3 / 3 / 0
Регистрация: 15.09.2012
Сообщений: 86
#1

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

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

Здравствуйте!
Занимаюсь написанием программы. В ходе написания возник следующий вопрос. В ходе выполнения нижеприведенного кода выдается ошибка:
Необработанное исключение в "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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 20:26     Исправление ошибок в программе
Посмотрите здесь:

Исправление ошибок в программе - C++
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 == &quot; &lt;&lt; v &lt;&lt; endl; ...

Исправление ошибок в программе - C++
Здравствуйте! Помогите пожалуйста исправит ошибки в программе. Программа была написана по заданию: Собственно код: //...

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

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

Исправление ошибок - C++
Пожалуйста помогите исправить ошибки!!! #include &lt;iostream h&gt; #include &lt;stdlib h&gt; int main() { int n = 10; int a = ;...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yekka
385 / 149 / 8
Регистрация: 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 для одного и того же указателя, да еще и потом использовать этот удаленный указатель для доступа к массиву
Ultran
3 / 3 / 0
Регистрация: 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];
    }
Т.е. вот так будет правильно, верно?
yekka
385 / 149 / 8
Регистрация: 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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2012, 20:46     Исправление ошибок в программе
Еще ссылки по теме:

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

исправление ошибок - C++
//funkcijas1 #include &lt;iostream&gt; using namespace std; int main() { int i, fact=1, n; cout &lt;&lt;&quot;Введите целое...

Исправление ошибок - C++
Помогите запустить программу #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &lt;fstream.h&gt; int vvod(); int vivod(); char Name;...

Исправление ошибок в коде - C++
Компилятор находит ошибки , просьба помочь исправить ошибки в коде #include &lt;avr/io.h&gt; #include &lt;avr/interrupt.h&gt; #include...

Исправление ошибок в коде - C++
Ребят, помогите пожалуйста, уже завтра экзамен, а я понятия не имею как исправить ошибки в данном коде(строки с ошибками помечены так (*))....

Исправление ошибок в коде - C++
Нужно исправить все ошибки в этом коде. Заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
Ultran
3 / 3 / 0
Регистрация: 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;
Все, я понял свою ошибку!
Спасибо Вам большое, не досмотрел просто.
Yandex
Объявления
08.12.2012, 20:46     Исправление ошибок в программе
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru