|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.12.2011, 22:33 | #1 |
Регистрация: 09.12.2011
Сообщений: 4
|
Debug Error! в C++
Написал программу в С++, которая проверяет семетричность матрицы относительно побочной оси. При компиляции 0 ошибок. Но после того как программа выдаёт ответ семетрична ли введённая матрица или нет, выскакивает ошибка: Debug Error! В чём дело?
Вот код: #include "stdafx.h" #include <iostream.h> #include <math.h> int main() { int p, i, k, e=0, l=0; cout << "vvedite poryadok matrici "; cin >> p; int **mat; mat = new int*[p-1]; for(i=0; i<p; i++) { mat[i] = new int[p-1]; } for(i=0; i<p; i++) { for(k=0; k<p; k++) { cout << "vvedite element matrici " << i << ","<< k << endl; cin >> mat[i][k]; } } for(i=0; i<p; i++) { for(k=0; k<p; k++) { if (mat[i][k]==mat[p-1-k][p-1-i]) e++; else l--; } } if (e==p*p) cout <<"semetri4naya" << endl; else cout <<"Hesemetri4naya" << endl; for(i=0; i<p; i++) delete []mat[i]; delete []mat; return 0; } |
12.12.2011, 22:48 | #2 |
Форумчанин
Регистрация: 09.10.2010
Сообщений: 217
|
Код:
Код:
Ёж птица гордая, пока не пнешь не полетит.
|
13.12.2011, 12:21 | #3 |
Регистрация: 09.12.2011
Сообщений: 4
|
а что в этом коде не так?
|
13.12.2011, 18:03 | #4 |
Регистрация: 09.12.2011
Сообщений: 4
|
исправьте ошибку, пожалуйста.
|
13.12.2011, 18:16 | #5 |
Регистрация: 09.12.2011
Сообщений: 4
|
Поработал над очищением памяти массива, и оказалось ошибок там нет! Дело в return 0;, что стоит после очищения массива. Если очистить массив после возвращения функции, то ошибок нет...
|
13.12.2011, 21:17 | #6 |
Форумчанин
Регистрация: 09.10.2010
Сообщений: 217
|
Если вы поставите очищение памяти после return, то ничего очищаться не будет...
Допусти вы хотите выделить память для 10 элементов(p=10). Вы должны написать int new [10]; и доступ к этому массиву будет доступен по индексам 0,1,...,9. В вашем случае int new [10-1]; память выделили под 9 элементов (0,1,..,8) Теперь очистка памяти: цикл for(int i=0;i<p;i++) проходит от до 9 , а в вашем программе выделено лишь 8. И программа вылетает в том месте, где программа пытается освободить память по 9 элементу.
Ёж птица гордая, пока не пнешь не полетит.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно удалить указатель на массив - на строке с delete вылетает Debug Error. | ImmortalAlexSan | Общие вопросы C/C++ | 18 | 07.06.2011 17:49 |
Периодическая ошибка Run-time error -2147417848 (80010108) Automation error в файле с макросом | faraviper | Microsoft Office Excel | 0 | 24.02.2011 16:23 |
Ищу причину ошибки: Error in loading DLL, она же Error 48. | hozpraktik | Microsoft Office Excel | 1 | 19.11.2009 12:39 |
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/main.exe : fatal error LNK11 | prefak | Win Api | 0 | 19.04.2009 16:51 |
Debug/DLL10.dll : fatal error LNK1136: invalid or corrupt file | AHJLPeu* | Общие вопросы C/C++ | 2 | 23.10.2008 20:59 |