|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
Неинициализированные указатели14.04.2026, 17:27. Показов 8111. Ответов 127
Метки нет (Все метки)
Подскажите пожалуйста, если использование неинициализированных указателей в С++ сопряжено с рисками неопределённого поведения и случайного доступа к памяти, то для каких целей в языке оставлена возможность объявления неинициализированных указателей?
0
|
|
| 14.04.2026, 17:27 | |
|
Ответы с готовыми решениями:
127
Неинициализированные локальные переменные Неинициализированные переменные Неинициализированные локальные переменные warning C4700 |
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
|||
| 15.04.2026, 05:57 | |||
main. С 2022 года кодогенераторы существенно ушли вперед.На Apple Clang 14 удаляет цикл из кода по причине UB точно так же, как и везде. На Godbolt это сразу очевидно, потому что неинициализированная переменная выводится как 0. А у вас ("большое число") нужно лишь слегка модифицировать код, чтобы увидеть "чудеса". В любом случае, вы нам собираетесь рассказывать, что у вас не проявляется очевидный UB? К чему это тут? Какие выводы нам предлагается из этого сделать?
0
|
|||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 07:45 [ТС] | |
|
TheCalligrapher, Отвечая вам и Наталья8, этой незамысловатой программой я опроверг мнение Алексей 1153 - "Как раз неинициализированному указателю совсем-совсем ничего не присваивается ..." озвученное ранее, а так же предметно подтвердил позицию заявленную Страуструпом из цитаты его книги "Эта инструкция записывает число 7.0 в некую ячейку памяти. Мы не знаем, в какой части памяти расположена эта ячейка. Это может быть безопасно, но рассчитывать на это нельзя. Рано или поздно мы получим тот же результат, что и при выходе за пределы допустимого диапазона: программа аварийно завершит работу или выдаст неправильные результаты." и цитаты от ИИ "Если попытаться вывести значение неинициализированного указателя, например, с помощью std::cout, то на экран будет выведено адрес в памяти, который хранится в указателе. Это может быть любой адрес, включая тот, который не ссылается на допустимый объект." представленными мною ранее. В каком месте Страуструп врёт, а ИИ ошибается так и осталось для меня загадкой, так же как и смысл приведения примеров неинициализированных переменных применительно к вопросу о неинциализированном указателе.
0
|
|
|
фрилансер
6494 / 5722 / 1133
Регистрация: 11.10.2019
Сообщений: 15,282
|
|
| 15.04.2026, 08:00 | |
|
Also what, моя последняя попытка:
неинициализированной фундаментальной переменной ничего не присваивается. Это не мнение, это так работает. Выделяется место на стеке (либо выделяется регистр под переменную). В это место ничего не пишется, какие битики там были, так и остаётся. Это и есть тот мусор, который там уже был ранее, то есть, его мы не сейчас туда записали, он там просто валялся. Можешь представить белую доску, на которой маркером написаны разные числа. Обведи на доске прямоугольником некую область - это ты выделил место по переменную на стеке. Некие числа попали в этот прямоугольник. Ты же их туда не записывал, они там были ранее, возможно год назад они там были написаны. Эти числа не имеют смысла. И никто не пойдёт вводить их в качестве пароля или искать дом по этому адресу
0
|
|
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:22 [ТС] | |
|
Алексей1153, Ну почему же не имеют смысла. Всему при желании можно найти применение. По факту число есть? Есть. Указателю адрес на это число присвоен? Присвоен. Утверждение "неинициализированному указателю совсем-совсем ничего не присваивается" ложно? Ложно. Кто и когда туда записал это число вообще вопрос десятый, главное что неинциализированный указатель на него ссылается и мы при желании можем его считать и даже изменить если захотим. А насчет использования/бесполезности - почему бы не использовать это рандомое число вместо функции предоставляющей рандомное число например.
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
|||
| 15.04.2026, 08:27 | |||
|
Спецификация (стандарт) языка С++ ясно говорит в [basic.indet], что неинициализированная автоматическая переменная содержит indeterminate value (C++23, [basic.indet], пункт 1). Любое вычисление, порождающее indeterminate value в качестве результата, вызывает неопределенное поведение (за рядом исключений, сделанных для значений типов unsigned char и std::byte) (C++23, [basic.indet], пункт 2). Всё. Это - единственно правильный ответ. Никакого другого ответа тут быть не может. И ваш ИИ с радостью вам об этом расскажет, если вы на этом настоите. И даже честно признает, что изначально нес чепуху. Неинициализированная переменная типа "указатель" - это просто неинициализированная переменная, ничем не отличающаяся от любой другой неинициализированной переменной. Указатели не имеют никакого особого статуса в С++. Я думал, что такие элементарные вещи не надо разжевывать. Тут вам нужно самостоятельно достраивать элементарные недостающие связи, потому что остальным участника форума они могут казаться само собой разумеющимися: если я в разговоре об указателях привел пример без указателей, значит вы тут же делаете и берете на карандашик вывод о том, что разницы нет.
0
|
|||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:32 [ТС] | |
|
TheCalligrapher, Простите, а зачем вы мне раз за разом указываете спецификацию неинициализированной переменной, если мой вопрос о неинциализированном указателе? Меня не интересуют неинициализированные переменные от слова совсем.
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
||
| 15.04.2026, 08:42 | ||
|
А вы оказывается что-то новое придумали, но нам до сих пор не сказали. Так расскажите же нам тогда, о чем вы вообще ведете речь. Я весь в нетерпении.
0
|
||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:45 [ТС] | |
|
О неинциализированных указателях и только. Указатель ссылается на переменные, но не является ими. Разве в спецификации это не написано?
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
|||
| 15.04.2026, 08:48 | |||
|
Вынужден вас разочаровать: в языке С++ все объекты в хранилище, без исключения - переменные. Указатели тоже. Ваши слова отдаленно похожи на несколько перевранные характеристики ссылок (а не указателей). Ссылки в С++ не являются объектами, но, что интересно, являются переменными тоже. Понятие переменной в С++ определяется как совокупность объектов и ссылок:
0
|
|||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:59 [ТС] | |
|
TheCalligrapher, TheCalligrapher,"В языке С++ понятие инициализации/инициализированности применимо только к объектам, то есть к переменным", "в языке С++ все объекты в хранилище, без исключения - переменные. Указатели тоже." - то есть указатели тоже объекты/переменные. Тогда почему к ним не применимо понятие инициализации/инициализированности? Противоречите сами себе батенька.
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
||||
| 15.04.2026, 09:01 | ||||
![]() Мои слова:
0
|
||||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:12 [ТС] | |
|
TheCalligrapher, Да ладно дурака-то включать. Ваша цитата "В языке С++ понятие инициализации/инициализированности применимо только к объектам, то есть к переменным." была приведена как ответ на мою "а зачем вы мне раз за разом указываете спецификацию неинициализированной переменной, если мой вопрос о неинциализированном указателе?" где я недвусмысленно веду речь об указателях. "В языке С++ понятие инициализации/инициализированности применимо только к объектам, то есть к переменным" что применительно к обсуждаемым указателям явном образом подразумевает за собой, что к указателям понятие инициализации/инициализированности по вашему мнению не применимо. Налицо переобувание на ходу, вы так не считаете?
0
|
|
|
фрилансер
6494 / 5722 / 1133
Регистрация: 11.10.2019
Сообщений: 15,282
|
|
| 15.04.2026, 09:18 | |
|
Also what, предлагаю найти пять отличий в функциях f1 и f2 (ну, кроме имён)
https://godbolt.org/z/xKf7dvTr3 Если удалось найти отличия, поздравляю, программирование - это не твоё
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
||
| 15.04.2026, 09:18 | ||
|
P.S. Кстати, я это уже говорил выше. У мне складывается такое впечатление, что вы не конспектируете мои посты, не прорабатываете их длинными зимними вечерами при свете настольной лампы и не перечитываете их необходимое для закрепления количество раз. Заверяю вас, так никакого толку не будет.
0
|
||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:25 [ТС] | |
|
TheCalligrapher Ответил уклончиво. Алексей1153 Рискну предположить, что у представленных вами функций кроме имён отличаются ещё и фамилии. Я буду программистом?
0
|
|
|
фрилансер
6494 / 5722 / 1133
Регистрация: 11.10.2019
Сообщений: 15,282
|
|
| 15.04.2026, 09:27 | |
|
Also what, так, а ещё три отличия ?
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
|
| 15.04.2026, 09:31 | |
|
Не по теме: У меня создается устойчивое впечатление, что мы уже наблюдаем вторую фазу того, о чем я говорил в посте #34. Когда нашему "старому знакомому" под очередным аккаунтом надоедает морочить нам голову, т.е. делать вид, что у него был какой-то вопрос, то начинается вторая фаза марлезонского балета: просто болтовня "ни о чем" без смысла и содержания. Я думаю, что здесь уже ничего толкового не будет.
0
|
|
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:33 [ТС] | |
|
Тебе надо ты и ищи.
Добавлено через 2 минуты Вы думаете? Мне показалось, что вы точно знаете.
0
|
|
|
фрилансер
6494 / 5722 / 1133
Регистрация: 11.10.2019
Сообщений: 15,282
|
|
| 15.04.2026, 09:34 | |
|
короче, обычный тролль.
Расходимся
0
|
|
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:38 [ТС] | |
|
А вы по всей видимости искали какого-то необычного. Вынужден вас разочаровать.
1
|
|
| 15.04.2026, 09:38 | |
|
Ошибка, указывающая на неинициализированные переменные Ошибка: неинициализированные переменные Неинициализированные переменные
Указатели и указатели на указатели, а также типы данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно»
Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
|
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую:
Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
|
|
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий?
Да, такие данные есть, и они хорошо описаны и в российской,. . .
|
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу:
https:/ / github. com/ altbodhi/ ReConMan
По итогу пришел к мысли, что DU не дружат с существующими технологиями.
От сериализации до отображения в реляционную. . .
|
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|