|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
||||||
Вылет программы при создании объекта10.10.2015, 18:25. Показов 3356. Ответов 54
Метки нет (Все метки)
Начал изучать классы с создания класса для работы с массивами, класс должен работать как с одномерными так и двумерными динамическими массивами. Но возникла проблема: программа отчего-то вылетает при создании объекта. С чем это может быть связано?
0
|
||||||
| 10.10.2015, 18:25 | |
|
Ответы с готовыми решениями:
54
Вылет из программы при выполнении Вылет при работе программы с неизвестной ошибкой Вылет программы при удалении динамического массива |
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
|
| 10.10.2015, 19:58 [ТС] | |
|
А вообще, не правильней ли будет создать абстрактный класс и от него наследовать два класса, один из которых содержит средства для работы с одномерными массивами, а другой - с двумерными. Или это дело вкуса?
0
|
|
|
Модератор
|
||
| 10.10.2015, 20:03 | ||
|
Добавлено через 2 минуты EfesXZC, проще сделать класс Matrix, в котором одномерный массив будет частным случаем двумерного массива с размерностью rows = 1
1
|
||
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
|
| 10.10.2015, 20:05 [ТС] | |
|
0
|
|
|
Модератор
|
||||||||||||||||
| 10.10.2015, 20:20 | ||||||||||||||||
|
EfesXZC, вот Вам мой вариант:
Matrix.h
Matrix.cpp
main.cpp
1
|
||||||||||||||||
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
|
| 10.10.2015, 20:46 [ТС] | |
|
gru74ik, конечно интересней было бы самому написать
, но спасибо. Буду изучать и пытаться добавлять новые методы
0
|
|
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
||
| 10.10.2015, 20:53 [ТС] | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 10.10.2015, 21:59 | ||
|
Massiv(int rows, int columns=1) т.е. одномерный массив - это двумерный с одним столбцом Логика работы сразу упростится. Ну и еще зачем под каждую строку выделять память отдельно? У вас что размер блока ограничен? Выделите одним куском, и расcтавте указатели на начало строк. Т.е. воспринимайте двумерный массив как одномерный порезанный на куски равной длины. Тоже сильно упростит логику а соответственно и работу с памятью.
0
|
||
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
|||
| 11.10.2015, 00:16 [ТС] | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||||||||||
| 11.10.2015, 13:19 | |||||||||||||||||
|
Соответсвенно под данные для двумерного массива память можно выделить так:
Data[Row*ColCount+Col]; что не очень удобно и даже если инкапсулировано в метод класса медленно. Поэтому добавляем табличку ускорения в виде массива указателей на строки:
Ну и в деструкторе все просто становится:
0
|
|||||||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 11.10.2015, 14:06 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 11.10.2015, 14:13 | ||
|
Не по теме: Кстати вопрос для очередного холивара: адреса памяти растут слева на право или сверху вниз? :D
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 11.10.2015, 14:16 | |||
|
это имеет значение на алгоритм обхода массива. когда линия - есть строка, а не столбец.
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 11.10.2015, 14:32 | |||
|
0
|
|||
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
||
| 11.10.2015, 16:52 [ТС] | ||
|
Не по теме: Похоже, что мне надо почитать про организацию памяти. Какое чтиво посоветуете?
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||||
| 11.10.2015, 18:32 | ||||||||||
|
Т.е.
т.е. при добалении/вычитании чего либо к типизированному указателю добавляете не само это число а размер такого количества ячеек этого типа. Добавлено через 16 минут Потому что на момент выполнения этой операции в Rows[1] уже записано 2 на предыдущем шаге цикла. Добавлено через 1 минуту Добавлено через 49 минут Не по теме:
1
|
||||||||||
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
||
| 13.10.2015, 09:04 [ТС] | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 13.10.2015, 15:20 | |||||||
0
|
|||||||
|
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
|
|||||||||||
| 15.10.2015, 22:23 [ТС] | |||||||||||
|
И снова ступор. Пытаюсь реализовать функцию транспонирования матрицы. Точнее я ее реализовал. Для этого пришлось создать новую матрицу, а ведь старую при этом, по хорошему, надо бы тут же удалить, а не ждать пока сработает деструктор. Вот тут и возникает вновь проблема ломанувшегося в неинициализированный массив деструктора. И как следствие, вылета программы. Что делать? Это во-первых. А во-вторых как можно сделать так, чтобы возвращаемый функцией transpon массив _common_block, можно было использовать в функции getMatrix? (И правильно ли я делаю возвращение? )
Ааа, блин, понял ошибку... Возвращаемая матрица является локальным объектом. Но тогда как сделать транспонирование? Я пока вижу только следующую последовательность действий: Создать копию common_block[i][j] (copy_common_block[i][j]). Удалить common_block[i][j]. Cоздать common_block[j][i]. Сделать транспонирование. Удалить copy_common_block[i][j]. Добавлено через 1 минуту Но, не думаю, что это оптимальный вариант
0
|
|||||||||||
| 15.10.2015, 22:23 | |
|
Ошибка при создании объекта
Undefined reference при создании объекта
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|