|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.02.2011, 13:56 | #1 |
Пользователь
Регистрация: 28.02.2011
Сообщений: 16
|
C: free() - ошибка при выполнении
Здравствуйте. Подскажите, как устранить следующую проблему. Сделал перемножение динамических матриц.
Код:
Вот сигнатура: Имя события проблемы: APPCRASH Имя приложения: MultMatrix.exe Версия приложения: 0.0.0.0 Отметка времени приложения: 4d6b7b1e Имя модуля с ошибкой: ntdll.dll Версия модуля с ошибкой: 6.1.7600.16559 Отметка времени модуля с ошибкой: 4ba9b29c Код исключения: c0000005 Смещение исключения: 0003285d Версия ОС: 6.1.7600.2.0.0.256.48 Код языка: 1049 Дополнительные сведения 1: 0a9e Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789 Дополнительные сведения 3: 0a9e Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789 |
28.02.2011, 14:11 | #2 | |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Цитата:
(это касается только Си, в C++ приводить тип у calloc/malloc уже надо, но кто ж там их использует...) По-моему, у тебя косяк в том, что везде используется что-то типа Код:
Код:
И вот ещё что. Незачем объявлять счётчики (k, i и так далее) заранее. Просто пиши for (int i=0; ........................) { ...... }
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
|
28.02.2011, 14:44 | #3 |
Пользователь
Регистрация: 28.02.2011
Сообщений: 16
|
Спасибо, проблему устранил. Оказывается, я плохо подумал, когда уменьшал исходные параметры.
По поводу счетчиков - у меня была мысль локализовать их, но программа сплошь состоит из циклов, поэтому я решил, что объявлять счетчики сразу для всех циклов по мере их необходимости будет рациональнее. Из этих же соображений я хотел поместить выделение памяти под матрицу C после заполнения A и B, но при этом программа завершалась с похожей ошибкой в самых неожиданных местах... Последний раз редактировалось Colder M; 28.02.2011 в 14:48. |
28.02.2011, 14:50 | #4 | ||
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Цитата:
Например, тут ошибки нет: Код:
Код:
Цитата:
Код:
Код:
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 28.02.2011 в 14:57. |
||
28.02.2011, 15:06 | #5 |
Пользователь
Регистрация: 28.02.2011
Сообщений: 16
|
Большое спасибо за советы, пользуюсь. С понижением переменной я уже разобрался, просто поздно подредактировал пост. Перенес выделение памяти под C куда и хотел, проблема была все в том же счетчике.
|
28.02.2011, 15:17 | #6 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Но бога ради, пользуйся этими советам:
1) Вместо D=(int**)calloc(s,sizeof(int*)) пиши просто D=calloc(s,sizeof(int*)) 2) Для итераций по массивам вместо for(i=0; i<=s; i++) (где s=real_size_of_arr-1) пиши for(i=0; i < real_size_of_arr; i++) 3) Не объявляй счётчики заранее Этим правилам (во всяком случае, второму и третьему) в наше время следуют все хорошие программисты на Си.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 28.02.2011 в 15:19. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при выполнении | 123cmp | Помощь студентам | 4 | 22.01.2011 23:45 |
Ошибка при выполнении программы | Гурам | Общие вопросы Delphi | 1 | 18.11.2010 18:53 |
Странная ошибка при выполнении | okolobaxa | Общие вопросы Delphi | 2 | 03.07.2007 00:47 |
Ошибка при выполнении запроса | Elena | БД в Delphi | 3 | 14.06.2007 15:13 |
Ошибка при выполнении запроса | Elena | БД в Delphi | 2 | 25.05.2007 16:19 |