|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
Неинициализированные указатели14.04.2026, 17:27. Показов 9511. Ответов 130
Метки нет (Все метки)
Подскажите пожалуйста, если использование неинициализированных указателей в С++ сопряжено с рисками неопределённого поведения и случайного доступа к памяти, то для каких целей в языке оставлена возможность объявления неинициализированных указателей?
0
|
|
| 14.04.2026, 17:27 | |
|
Ответы с готовыми решениями:
130
Неинициализированные локальные переменные Неинициализированные переменные Неинициализированные локальные переменные warning C4700 |
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
|||
| 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
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,337
|
|
| 15.04.2026, 08:00 | |
|
Also what, моя последняя попытка:
неинициализированной фундаментальной переменной ничего не присваивается. Это не мнение, это так работает. Выделяется место на стеке (либо выделяется регистр под переменную). В это место ничего не пишется, какие битики там были, так и остаётся. Это и есть тот мусор, который там уже был ранее, то есть, его мы не сейчас туда записали, он там просто валялся. Можешь представить белую доску, на которой маркером написаны разные числа. Обведи на доске прямоугольником некую область - это ты выделил место по переменную на стеке. Некие числа попали в этот прямоугольник. Ты же их туда не записывал, они там были ранее, возможно год назад они там были написаны. Эти числа не имеют смысла. И никто не пойдёт вводить их в качестве пароля или искать дом по этому адресу
0
|
|
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:22 [ТС] | |
|
Алексей1153, Ну почему же не имеют смысла. Всему при желании можно найти применение. По факту число есть? Есть. Указателю адрес на это число присвоен? Присвоен. Утверждение "неинициализированному указателю совсем-совсем ничего не присваивается" ложно? Ложно. Кто и когда туда записал это число вообще вопрос десятый, главное что неинциализированный указатель на него ссылается и мы при желании можем его считать и даже изменить если захотим. А насчет использования/бесполезности - почему бы не использовать это рандомое число вместо функции предоставляющей рандомное число например.
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
|||
| 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
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 15.04.2026, 08:42 | ||
|
А вы оказывается что-то новое придумали, но нам до сих пор не сказали. Так расскажите же нам тогда, о чем вы вообще ведете речь. Я весь в нетерпении.
0
|
||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:45 [ТС] | |
|
О неинциализированных указателях и только. Указатель ссылается на переменные, но не является ими. Разве в спецификации это не написано?
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
|||
| 15.04.2026, 08:48 | |||
|
Вынужден вас разочаровать: в языке С++ все объекты в хранилище, без исключения - переменные. Указатели тоже. Ваши слова отдаленно похожи на несколько перевранные характеристики ссылок (а не указателей). Ссылки в С++ не являются объектами, но, что интересно, являются переменными тоже. Понятие переменной в С++ определяется как совокупность объектов и ссылок:
0
|
|||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 08:59 [ТС] | |
|
TheCalligrapher, TheCalligrapher,"В языке С++ понятие инициализации/инициализированности применимо только к объектам, то есть к переменным", "в языке С++ все объекты в хранилище, без исключения - переменные. Указатели тоже." - то есть указатели тоже объекты/переменные. Тогда почему к ним не применимо понятие инициализации/инициализированности? Противоречите сами себе батенька.
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||||
| 15.04.2026, 09:01 | ||||
![]() Мои слова:
0
|
||||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:12 [ТС] | |
|
TheCalligrapher, Да ладно дурака-то включать. Ваша цитата "В языке С++ понятие инициализации/инициализированности применимо только к объектам, то есть к переменным." была приведена как ответ на мою "а зачем вы мне раз за разом указываете спецификацию неинициализированной переменной, если мой вопрос о неинциализированном указателе?" где я недвусмысленно веду речь об указателях. "В языке С++ понятие инициализации/инициализированности применимо только к объектам, то есть к переменным" что применительно к обсуждаемым указателям явном образом подразумевает за собой, что к указателям понятие инициализации/инициализированности по вашему мнению не применимо. Налицо переобувание на ходу, вы так не считаете?
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,337
|
|
| 15.04.2026, 09:18 | |
|
Also what, предлагаю найти пять отличий в функциях f1 и f2 (ну, кроме имён)
https://godbolt.org/z/xKf7dvTr3 Если удалось найти отличия, поздравляю, программирование - это не твоё
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 15.04.2026, 09:18 | ||
|
P.S. Кстати, я это уже говорил выше. У мне складывается такое впечатление, что вы не конспектируете мои посты, не прорабатываете их длинными зимними вечерами при свете настольной лампы и не перечитываете их необходимое для закрепления количество раз. Заверяю вас, так никакого толку не будет.
0
|
||
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:25 [ТС] | |
|
TheCalligrapher Ответил уклончиво. Алексей1153 Рискну предположить, что у представленных вами функций кроме имён отличаются ещё и фамилии. Я буду программистом?
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,337
|
|
| 15.04.2026, 09:27 | |
|
Also what, так, а ещё три отличия ?
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
|
| 15.04.2026, 09:31 | |
|
Не по теме: У меня создается устойчивое впечатление, что мы уже наблюдаем вторую фазу того, о чем я говорил в посте #34. Когда нашему "старому знакомому" под очередным аккаунтом надоедает морочить нам голову, т.е. делать вид, что у него был какой-то вопрос, то начинается вторая фаза марлезонского балета: просто болтовня "ни о чем" без смысла и содержания. Я думаю, что здесь уже ничего толкового не будет.
0
|
|
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:33 [ТС] | |
|
Тебе надо ты и ищи.
Добавлено через 2 минуты Вы думаете? Мне показалось, что вы точно знаете.
0
|
|
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,337
|
|
| 15.04.2026, 09:34 | |
|
короче, обычный тролль.
Расходимся
0
|
|
|
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
|
|
| 15.04.2026, 09:38 [ТС] | |
|
А вы по всей видимости искали какого-то необычного. Вынужден вас разочаровать.
1
|
|
| 15.04.2026, 09:38 | |
|
Ошибка, указывающая на неинициализированные переменные Ошибка: неинициализированные переменные Неинициализированные переменные
Указатели и указатели на указатели, а также типы данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|