|
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
|
|
Создание многомерных динамических массивов (динамических многомерных поинтеров)08.05.2024, 21:48. Показов 27350. Ответов 49
Метки нет (Все метки)
Привет знатокам!
Решил написать небольшую функцию по созданию многомерных массивов. Возникло затруднение создать динамические многомерные поинтеры на массивы. Сейчас объясню что хочу. входные/выходные данные: посылаем указатель на структуру в которой первым элементом будет поинтер(одномерный массив) с неизвестным количеством элементов. Количество элементов равно количеству измерений многомерного массива. Второй элемент возвращаемый поинтер на массив. функция читает элементы массива; первый элемент количество измерений массива, последующие элементы количество элементов в каждом измерении. Создать динамический массив не сложно, но возникает сложность когда количество измерений не определено. Возможно ли это средствами С++, я только начал разбираться в С++ , по моему (возможно неумному) мнению не очень удобный язык особенно приведение типов это полный абзац. кучи хендлов и LP по сути являющимися одним и этим же DWORD - кто придумал это г.? После ассемблера это просто отрыв головы(( Спасибо.
0
|
|
| 08.05.2024, 21:48 | |
|
Ответы с готовыми решениями:
49
Указатели динамических массивов Редактор многомерных динамических массивов Составление программ на обработку многомерных динамических массивов |
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||||
| 29.05.2024, 23:27 | ||||
|
Язык C++ - это не Java, у него нет виртуальной машины, которая может контролировать доступ, например, к памяти. Корректный доступ к памяти оставлен на совести программиста чтобы не замедлять программу тотальным контролем за памятью со стороны среды исполнения и все операции вне разрешенной памяти объявлены неопределенными. Они могут работать, могут не работать, могут работать сейчас, но сломаться потом. Могут запустить форматирование вашего жесткого диска, или запустить игру тетрис вместо того, что вы ждете. Это неизвестно. Память, где лежит FDFD - не ваша, это память менеджера кучи. Вы не имеете права писать туда что-то, даже если это работает. Вам может показаться, что если у вас получилось поставить успешный эксперимент, то это означает, что все было корректно, но нет - в C++ это так не работает. Фактически вы просто должны знать язык лучше, чем может вам объяснить компилятор, чтобы успешно писать на нем. Поэтому он считается сложным в большинстве сообществ.
0
|
||||
|
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
|
||
| 29.05.2024, 23:50 [ТС] | ||
|
эксперимент как раз и позволил, как вы написали глубже знать язык - я писал в том посте - интересное наблюдение... Давайте начистоту вы знали про эту особенность? хорошо не Вы, а все те, кто прочитал этот пост знали про эту особенность? Так что данное сообщение можно считать как deep learning)) А если говорить как вы писали... чтобы лучше контролировать программу, то мне кажется использование этого языка - мнимое удобство. Я должен еще и знать исходники всех операторов, что они там чудят(( даже при использовании стандартной лексики языка - которую пропускает компилятор. А еще существуют библиотеки в общем - мдя...
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||
| 30.05.2024, 00:19 | |||||
|
У меня есть пруфы. Прочтите. Тема 2019 года. Естественно я знаю про все особенности, которые вам могут только прийти в голову и которые не могут. Добавлено через 8 минут Контракты для new и delete описаны здесь: https://eel.is/c++draft/new.delete По-хорошему ваша программа не должна выходить за их предел при работе с new\delete. Если нужно что-то другое, то имеет смысл заменить глобальный аллокатор на какой-то свой собственный.
0
|
|||||
|
фрилансер
6445 / 5640 / 1128
Регистрация: 11.10.2019
Сообщений: 15,007
|
||
| 30.05.2024, 06:10 | ||
|
0
|
||
|
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
|
||||||
| 30.05.2024, 16:35 [ТС] | ||||||
|
В посте #39 вы пишите одно определил с помощью new двумерный массив и оказалось, что fdfd все-таки существует, не только в моем больном воображении и воображении больного компилятора)). Чтобы полностью исключить возражения по быстрому написал функцию которая распечатывает содержимое следующей после поинтеров на данный массив ячейки памяти. Запустил без отладчика, как ни странно мой компьютер оказался тоже не совсем здоров и выдал fdfd((( У вас классный ник DrOffset Может дорогой доктор полечит меня мой компьютер и компилятор)) очередной порцией интересных историй про его high level, что надо глубже учить язык, только бы его не проглотить)) Для достижения стабильности мне чуть ли исходники операторов тогда надо изучать((, как вы там написали Контрактов - не достаточно.(( Вообще Windows,Linux,Unix.... написаны на С. И от этого кривой инструмент не становится прямее, просто нет ничего более подходящего(( И одним из подтверждений его кривизны являются бесконечные баги, которые надо править. Можно конечно сказать, что там туча людей работает, за всеми не уследишь итд - и это правда, а где же ваша любимая типизация которая как вы писали позволяет лучше контролировать код. Что-то мне кажется все таки общаясь на этом форуме можно легко подцепить эту серьезную хворь - демагогию. Похоже я не ошибался, что видоизмененное мироощущение все-таки здесь присутствует. Выражаясь Вашим языком - пруффы в студию. screenshot отладчика где я проверял ваши глубокие знания. подчеркнуты 2 dword для поинтеров строк еще не заполненные (обычно эти поля перед заполнением содержат cdcdcdcd), и третий dword fdfdfdfd после выполнения оператора new; красным - точка останова с вызовом оператора new; iep - текущая выполняемая команда; ss:[ebp-e0] адрес нулевого поинтера который равен 0x016675A8. Прекратите писать ерунду, эту ветку форума просмотрели более 1800 раз, зачем дескридитировать себя, все это читают и видят. Надо быть нормальными людьми. Знаете - пишите ответ, не знаю - пишите не знаю - это Все оценят и это только добавит к Вам уважения. Врать надо девушкам, если они конечно будут Вас слушать)) А теперь можете заплевать меня своими обычными фразами про обидчивого неуча))
0
|
||||||
|
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
|
|
| 30.05.2024, 16:57 [ТС] | |
|
Алексей1153,
пересекутся, я это и проверил,я об этом писал был создан трехмерный массив. Потом некоторое время я работал с данными этого массива. В том числе создавал другие массивы. Потом меня осенила идея проверить можно ли это? - и уже к существующему первому массиву решил добавить страниц, листов и глав - после этого new начала затирать точки которые она сама расставляет fdfdfdfd. и при попытке удаления массива, страницы или листа выдавала исключение, когда я прописывал fdfdfdfd на то место где оно должно было быть - исключение пропало. Следующий эксперимент был - записал в этот видоизмененый массив с новой страницей(поинтером) - fdfdfdfd на следующее место после нового поинтера как писал drOffset в запрещенную память. И это исключение опять пропало. я думаю эти fdfdfdfd нужны для delete в качестве рэперных точек. кстати при удалении она записывает туда опять cdcdcdcd Мы уже с вами обсуждали что new создает динамические страницы с большими дырками между страницами и в этом плане линейные массивы лучше. Я не исключаю, что в этих областях хранится какая-то служебная информация может по размеру страниц, количеству страниц,( поэтому дырки между страницами), и писать туда вроде как нельзя. Но факт остается фактом.(( Я посмотрел эти области не заполнены случайными байтами - правда не дизассемблировал - не было желания, может там вообще какие либо фрагменты кода.
0
|
|
|
фрилансер
6445 / 5640 / 1128
Регистрация: 11.10.2019
Сообщений: 15,007
|
||||
| 30.05.2024, 17:25 | ||||
|
------------- И вообще, сделай лицо попроще. Поначалу ты выглядел адекватным, а щас понесло тебя, аж неприятно
0
|
||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||
| 30.05.2024, 18:59 | |||||||
|
Вот пожалуйста статья об этом (crt-debug-heap): https://learn.microsoft.com/en... w=msvc-170 Вот ваш FD:
Если перейти на GCC\Linux, там вы такого не найдете (но можете найти что-то другое). Если ваш код с привязкой к реализации MS и эксплуатацией UB будет работать в Windows и MSVC, то в GCC уже не будет. О чем я писал. Все эти вещи находятся на пределами C++ и для программирования о них вообще можно не знать. ![]() Пока что дискредитируете себя тут только вы.
0
|
|||||||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,202
|
||
| 30.05.2024, 20:54 | ||
|
Единственная операционная система, которая в какой-то мере могла быть "написана на С" - это тот самый Unix до эпохи System V из конца 70-х годов прошлого века, в процессе работы над которым (и для работы над которым) Денис Ритчи собственно и задумал язык С.
0
|
||
|
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
|
|
| 30.05.2024, 21:33 [ТС] | |
|
Ух ты сколько букв, и все в прежнем стиле наверное, я боюсь не осилю.))) да еще и какие знатоки пишут мастер красивого письма и дохтор. Я думаю, что кто-нибудь ЭТО прочитает... По делу, друзья мои, по делу пишите. Удачи!
0
|
|
| 30.05.2024, 21:33 | |
|
Помогаю со студенческими работами здесь
50
Создание динамических массивов Создание динамических двумерных массивов Создание и размер динамических массивов Индексация многомерных массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|