|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
||||||
Можно ли обойти динамический массив не зная его размер?11.04.2016, 02:13. Показов 15250. Ответов 79
Метки нет (Все метки)
1
|
||||||
| 11.04.2016, 02:13 | |
|
Ответы с готовыми решениями:
79
Можно ли создать массив, изначально не зная его размерности? Можно ли задать массив, не зная заранее его длину? |
|
Комп_Оратор)
|
||
| 11.04.2016, 22:05 | ||
![]() Но это не значит, что указатель, - конвертер. Он об этом и не догадается.
1
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||
| 11.04.2016, 22:14 | ||
|
0
|
||
|
Комп_Оратор)
|
||
| 11.04.2016, 22:20 | ||
|
Любой тип с точки зрения низкоуровневого размещения это массив байт. Это если говорить о уровнях абстракции там, где не нужно бы.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 11.04.2016, 22:24 | |||
|
никаких гарантий. _msize выдает размер блока, который гарантированно не меньше, но может быть больше, например. "массив данных" не имеет к нему никакого отношения.
1
|
|||
|
|
||
| 11.04.2016, 22:25 | ||
|
По поводу баллов - я не тот кто их раздаёт. Мне на них плевать.
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 11.04.2016, 22:32 | |
|
То, что это не тип данных, не позволяет говорить, что динамических массивов в C++ нет.
0
|
|
| 11.04.2016, 22:32 | |
|
Не по теме: castaway, это же была очевидная цитата с теле-программы.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 11.04.2016, 22:41 | |||||||
|
которые предназначены для компалтайм вычислений. http://rextester.com/BAWA95629
2
|
|||||||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
| 11.04.2016, 22:53 | ||||||
|
hoggy, и тем самым ваш код стал еще "не читабельнее".
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 11.04.2016, 22:58 | |
|
Т. е. это просто способ получить размер в элементах, а не в байтах?
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 11.04.2016, 23:13 | ||
|
0
|
||
|
Комп_Оратор)
|
|||||||
| 12.04.2016, 00:18 | |||||||
Fulcrum_013, поскольку мы не понимаем друг друга в таких простых вещах как char != int и (int*) !=[]int то в с-строки предлагаю не уходить. И так нагородили, - будь здоров. ![]() ps если Вы знаете число которое можно использовать в качестве терминатора для, скажем, int то напишите его.
0
|
|||||||
|
Неэпический
|
||||
| 12.04.2016, 09:35 | ||||
|
Одной виндой мир не ограничен. У меня, например, оно 4 байта. то это не значит что так оно везде. Да, он целочисленный, да, занимает один байт, но, например, кто сказал что он unsigned? char может быть как беззнаковым, так и знаковым - это определяется реализацией. только вот имя массива несет в себе дополнительную метаинформацию, которая теряется при decay типа до указателя. Не понимание этого момента может сильно стукнуть по башке в шаблонах.
2
|
||||
|
Комп_Оратор)
|
||
| 12.04.2016, 10:21 | ||
|
Меня вот всегда занимал вопрос удивительного отличия delete от delete []. Утверждается, что оно в том, что первый запускает деструктор для объекта по указателю где память выделялась оператором new, а второй, - для всех объектов, под которые память которые выделена оператором new[]. То есть, похоже что не просто "каждый компилятор желает знать, где сидит фазан"! Похоже, что каждый компилятор знает размер или может его узнать. Пусть память выделяется и освобождается операционной системой, по запросу программы, но конструкторы и деструкторы же не передаются? Значит информация должна где-то быть у программы?
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 12.04.2016, 10:39 | ||||
|
Добавлено через 7 минут
0
|
||||
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
|||||||
| 12.04.2016, 10:55 | |||||||
|
Попробуйте сами:
0
|
|||||||
|
Неэпический
|
||
| 12.04.2016, 11:05 | ||
|
Добавляется некий хвостик перед основным буфером, который содержит число элементов, собственно при new такой хвостик может отсутствовать, дабы не нужен, соответственно операции new/new[] delete/delete[] должны соответствовать друг другу. Вот пример: Передача по ссылке двумерного динамического массива в функцию
1
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.04.2016, 11:16 | ||
|
0
|
||
|
Неэпический
|
||
| 12.04.2016, 11:24 | ||
|
Например: Как видим, работа new и new[] может отличаться. И вообще может вернуться указатель не на выделенную память, а на некий определенный участок этой памяти. Вот, например, при использовании delete оно знает, что объект один, вызывает деструктор и передает адрес дальше в функцию освобождения(operator delete). А теперь смотрите что получается, если мы передадим сюда то, что вернул нам new[], то получим вызов одного деструктора и передачу в operator delete указателя, только вот этот указатель уже не на выделенную память, а несколько другой(тот, который вернулся пользователю). Соответственно получим черт пойми что. А если бы использовали delete[], то вот он уже знает о наличии хвоста и отработает корректно. И рассмотрим обратную ситуацию. Память выделялась с помощью new, а удаляется с помощью delete[]. delete[] предполагает, что есть хвост, ломится туда, читает оттуда кол-во элементов и вызывает деструкторы для данного кол-ва объектов. А теперь вопрос: что у нас в этом хвосте, если память выделялась new и никакого хвоста нет? Правильно! Неизвестно что там. Может 0, а может 100500. Соответственно уже имеем UB (не наша память + вызов деструкторов для несуществующих объектов). Плюс к этому добавляется то, что в operator delete уйдет указатель, смещенный "назад" на размер хвоста, что также приведет к неопределенным последствиям. Вызвали бы delete вместо delete[], то всё бы было нормально. По ссылке выше есть пример "перезаписи" этого "хвоста".
5
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.04.2016, 11:59 | ||
|
0
|
||
| 12.04.2016, 11:59 | |
|
Как правильно передать динамический массив в функцию, увеличивающую его размер, чтобы изменения сохранились
Создать массив с нулями и единицами в шахматном порядке, что бы его размер можно было вводить с клавиатуры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|