|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
На что указывает указатель пустого динамического массива?26.04.2020, 23:29. Показов 1573. Ответов 17
Метки нет (Все метки)
На что указывает указатель возвращенный оператором new для размера 0? Я так понимаю если это добавили то зачем то оно нужно,где такое используется?
0
|
|
| 26.04.2020, 23:29 | |
|
Ответы с готовыми решениями:
17
Инициализация пустого динамического массива на что указывает указатель |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 26.04.2020, 23:36 | |
|
На массив нулевой длины. Наверное, просто для универсальности сделали.
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 26.04.2020, 23:41 [ТС] | |
|
nmcf, но он же не может указывать на массив , это же не указатель на массив)
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 27.04.2020, 00:14 | |
|
Если ты указываешь размер, то там квадратные скобки, а значит массив.
Или где у тебя 0? Пример.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 27.04.2020, 00:35 | |||
|
поскольку количество элементов - ноль, то разыменовывание такого указателя - UB. массив из нуля элементов - точно такой же массив, только пустой. ты знаешь, как delete [] догадывается какой именно размер у массива?(если нет - погугли. на кб много раз это расжовывалось) грубо говоря - по смещению от указателя. обычно там по смещению какое то число. например: 10 значит через new[] выделялась память под массив из 10 элементов.в случае с нулевым массивом - всё тоже самое. только число будет равным 0
1
|
|||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,294
|
|||
| 27.04.2020, 00:42 | |||
new зарезервирован для обозначения вполне конкретной ситуации: ошибка выделения памяти в operator new. При этом запрос на память нулевого размера не является автоматически успешным или безуспешным. ("Even if the size of the space requested is zero, the request can fail"). Это важно в первую очередь для nothrow версии new, которая не имеет других средств индикации ошибки выделения памяти. В то же время удобно осознавать, что для бросающей исключения версии new возвращенный указатель гарантированно является ненулевым.Вот именно поэтому new с массивом нулевого размера возвращает ненулевой указатель.А зачем это может быть реально нужно на практике... Приходит в голову лишь возможность таким способом генерировать уникальные значения выровненных указателей. Это довольно расточительный способ, но тем не менее... Что характерно, и в языке С malloc(0) имеет право возвращать ненулевой указатель. Этого не требуется, в отличие от С++, но дозволяется.Добавлено через 1 минуту
1
|
|||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|
| 27.04.2020, 01:04 | |
|
1
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 27.04.2020, 02:39 [ТС] | |
|
hoggy, я имел ввиду что при создании динамического массива возвращается никак не указатель на массив, а на его первый элемент, хоть они и могут иметь одинаковые адреса
Добавлено через 3 минуты TheCalligrapher, разве можно такой указатель назвать указателем на массив?
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 27.04.2020, 02:46 | |
|
ReYalp, Ну вообще то в С и С++ "массив" и "указатель на первый элемент" это одно и то же. для любого типизированного указателя определен оператор [].
Указатель же на массив имеет смысл отличать только в компайлтайме, только для статических массивов и только в тех контекстах в которых компилятор помнит размер массива.
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 27.04.2020, 02:49 [ТС] | |
|
Fulcrum_013, это не одно и то же, массив - это один тип, указатель на первый элемент массива - другой
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 27.04.2020, 03:55 | |||||||
|
т.е.
int [20]В первом случае компилятор знает размер во время компиляции во втором нет. С динамическим массивом по определению второй случай.
0
|
|||||||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,294
|
||
| 27.04.2020, 04:48 | ||
|
Спецификация языка не запрещает формирования массивов из нуля элементов. Спецификация языка запрещает лишь объявление в коде программы массивных типов T[N], когда N <= 0. Но new T[0] как раз таки обходится без этого.
0
|
||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|||
| 27.04.2020, 05:06 | |||
new T[0].
0
|
|||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,294
|
|||
| 27.04.2020, 05:51 | |||
new T[0], а не о результате выражения new T[0]. ("When the value of the expression is zero, the allocation function is called to allocate an array with no elements.")new [] стандарт открытым текстом называет указателем на начальный (initial) элемент созданного массива. Именно это я имел в виду, под указателем на начало массива.
0
|
|||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|||||
| 27.04.2020, 05:59 | |||||
0
|
|||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||
| 27.04.2020, 11:26 [ТС] | ||
|
TheCalligrapher,
0
|
||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,294
|
||
| 27.04.2020, 11:35 | ||
|
1
|
||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|
| 15.07.2022, 06:07 | |
|
0
|
|
| 15.07.2022, 06:07 | |
|
Помогаю со студенческими работами здесь
18
На что указывает указатель на массив?
Указатель и как запретить изменение на то что указывает для чего нужен указатель head и на что он указывает?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|