![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Karen_ |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2008 Репутация: нет Всего: нет |
может быть есть темы этого типа, но если не трудно не удалите и если кто может помогите
есть у меня класс, в котором у меня обявлен массив:
в классе есть функции которые инициализируют эту матрицу: потом в main-е с помощью обйекта получаю матрицу, скажем так:
потом копирую в B матрицу A таким образом
этот somefunction в B скажем находит число нулевих элементов, потом редактирует матрицу A, то есть вычитвыает из всех эелемнтов минимальный эелемнт, и так до тех пор пока не находит скажем N нулей: если размер матрицы A меньше 10, то вроди бы все делается нормально но если размер больше 10, во время работы выдает ошибку: Debug Assertion Filed File Dbgheap.cpp line 346 Expression CrtCheckMemory() есть кноки Abort Retry Ignore если нажать на Ignore То прога почти всегда доходит до конца и выдает результаты: потом ошибку, бывает и так что без ошибки завершает работу: как исправить прогу? Это сообщение отредактировал(а) Karen_ - 27.5.2008, 19:58 |
||||||
|
|||||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Karen_
Это сообщение скорее всего значит, что ты вышел за границы массива (т.е. обратился к 11-му элементу массива, в котором всего их 10). |
|||
|
||||
| Karen_ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2008 Репутация: нет Всего: нет |
код не секретный просто он очень большой, почти 1000 строк:
вот тот отрезок где копирую матрицу в другую, и отыскиваються те места где пересикаються множества в которых есть все нулевые элементы(просто не хотел писать все это чтобы не усложнить вопрос)
Это сообщение отредактировал(а) Karen_ - 27.5.2008, 20:17 |
|||
|
||||
| Rififi |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
- не показана самая интересная часть - создание и уничтожение массива указателей A
- начни уже потихоньку юзать STL. например эта телега:
(кстати, почему возвращается int? или число плюсов может быть отрицательным?) записывается так:
а учитывая, что размерности массивов у тебя - константы, большинство проверок можно делать в compile-time, причём без использования глобальных переменных вообще (которые - зло, и юзаются только ламерами).
- стоит подумать о том, чтобы хоть как-то ловить выход за пределы массива (сейчас никакого контроля нет вообще) хотя бы так:
или дополнительный класс(ы), чтобы сохранить текущий синтаксис. в общем, работать есть над чем. Добавлено через 1 минуту и 53 секунды и эта. не стесняйся пользоваться пробелом в коде, не экономь байты. |
||||||||
|
|||||||||
| Karen_ |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2008 Репутация: нет Всего: нет |
вот так создаю матрицу A
а так в деструкторе удаляю
|
||||
|
|||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
код выглядит корректным. если сообщение появляется во время работы, значит память портится на какой-то итерации.
начни добавлять трассировку (printf/file io) (чем дальше - тем больше) и дампить на экран/файл все важные значения. продолжать до тех пор, пока результаты трассировки не разойдутся с ожидаемыми, после чего локализовать ошибку и исправить её. |
|||
|
||||
| Karen_ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2008 Репутация: нет Всего: нет |
огромное спасибо, постараюсь.
и еще, в разных компиляторах ошибка выдает по разному. например в Visual Studo 7, во время работы постоянно выдает ошибку, который я уже написал, в Visual Studio 2005, почти всегда программа работает до конца выдает результаты, а потом уже ошиби: в GCC(под Linux) вроди бы работает нормально , пишет результаты, после нажатия Enter пишет Segmentation fault, Core dumped Это сообщение отредактировал(а) Karen_ - 27.5.2008, 22:15 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |