|
114 / 11 / 1
Регистрация: 01.05.2014
Сообщений: 133
|
|
Создание многомерных динамических массивов (динамических многомерных поинтеров)08.05.2024, 21:48. Показов 27863. Ответов 49
Метки нет (Все метки)
Привет знатокам!
Решил написать небольшую функцию по созданию многомерных массивов. Возникло затруднение создать динамические многомерные поинтеры на массивы. Сейчас объясню что хочу. входные/выходные данные: посылаем указатель на структуру в которой первым элементом будет поинтер(одномерный массив) с неизвестным количеством элементов. Количество элементов равно количеству измерений многомерного массива. Второй элемент возвращаемый поинтер на массив. функция читает элементы массива; первый элемент количество измерений массива, последующие элементы количество элементов в каждом измерении. Создать динамический массив не сложно, но возникает сложность когда количество измерений не определено. Возможно ли это средствами С++, я только начал разбираться в С++ , по моему (возможно неумному) мнению не очень удобный язык особенно приведение типов это полный абзац. кучи хендлов и LP по сути являющимися одним и этим же DWORD - кто придумал это г.? После ассемблера это просто отрыв головы(( Спасибо.
0
|
|
| 08.05.2024, 21:48 | |
|
Ответы с готовыми решениями:
49
Указатели динамических массивов Редактор многомерных динамических массивов Составление программ на обработку многомерных динамических массивов |
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 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
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||
| 30.05.2024, 00:19 | |||||
|
У меня есть пруфы. Прочтите. Тема 2019 года. Естественно я знаю про все особенности, которые вам могут только прийти в голову и которые не могут. Добавлено через 8 минут Контракты для new и delete описаны здесь: https://eel.is/c++draft/new.delete По-хорошему ваша программа не должна выходить за их предел при работе с new\delete. Если нужно что-то другое, то имеет смысл заменить глобальный аллокатор на какой-то свой собственный.
0
|
|||||
|
фрилансер
6495 / 5723 / 1133
Регистрация: 11.10.2019
Сообщений: 15,284
|
||
| 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
|
|
|
фрилансер
6495 / 5723 / 1133
Регистрация: 11.10.2019
Сообщений: 15,284
|
||||
| 30.05.2024, 17:25 | ||||
|
------------- И вообще, сделай лицо попроще. Поначалу ты выглядел адекватным, а щас понесло тебя, аж неприятно
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 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
|
|||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 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 | |
|
Создание динамических массивов Создание динамических двумерных массивов Создание и размер динамических массивов Индексация многомерных массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|