Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29

Неинициализированные указатели

14.04.2026, 17:27. Показов 9191. Ответов 130
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, если использование неинициализированных указателей в С++ сопряжено с рисками неопределённого поведения и случайного доступа к памяти, то для каких целей в языке оставлена возможность объявления неинициализированных указателей?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.04.2026, 17:27
Ответы с готовыми решениями:

Неинициализированные локальные переменные
Меня интересует как обходить данные ошибки. В чем соль ошибок? Проблема даже не в том что они...

Неинициализированные переменные
пишет типа не инициализированы d1 и d2,хотя они объявлены#include "iostream" using namespace std;...

Неинициализированные локальные переменные warning C4700
// Laboratornaa.cpp: определяет точку входа для консольного приложения. // #include"stdafx.h"...

130
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
15.04.2026, 10:12
Студворк — интернет-сервис помощи студентам
ух ё... думал тема уже закрыта, ан нет - на четыре страницы наклепали, всю ночь сидели
Везучие - у вас похоже времени свободного дохрена
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
15.04.2026, 11:11
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В любом случае, вы нам собираетесь рассказывать, что у вас не проявляется очевидный UB? К чему это тут? Какие выводы нам предлагается из этого сделать?
Вы напрасно это "раздуваете". Хочу попечатать случайные ячейки памяти, что туда попало, то и попало. Корректная задача? Абсолютно. Выкидывать то что дальше юзается(печатается) в коде компилятор не должен. Если у Вас он как-то выкинул, или не выкинул - это его проблемы, надейтесь что скоро исправят.

И Вы совершенно напрасно подаете это как "глубокое знание плюсов, нюансов". К знанию/пониманию языка эти мелкие технические детали отношения не имеют
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,289
15.04.2026, 11:50
Recrut_rf, не всё ж на диване разлагаться, вот, решили с обычным троллем пообщаться
1
Заблокирован
15.04.2026, 12:06
Цитата Сообщение от Igor3D Посмотреть сообщение
К знанию/пониманию языка эти мелкие технические детали отношения не имеют
То есть, писать код с UB - это высокий уровень понимания С++?
Ясно-понятно)
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
15.04.2026, 12:29
Цитата Сообщение от Also what Посмотреть сообщение
А вы по всей видимости искали какого-то необычного.
Молодец... Вот тебе пирожок... Всё равно рано или поздно кто нибудь заминусует.
0
Заблокирован
15.04.2026, 13:06
Цитата Сообщение от Igor3D Посмотреть сообщение
Выкидывать то что дальше юзается(печатается) в коде компилятор не должен. Если у Вас он как-то выкинул, или не выкинул - это его проблемы, надейтесь что скоро исправят.
То есть, лучшего примера ещё нужно поискать.
Компиляторы которые генерируют код по стандарту - плохие.
Проявление UB которое меня устраивает и вмещается в мои хотелки - это отличные компиляторы, все остальные - кривые.

Астанавитесь.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
15.04.2026, 16:48
Цитата Сообщение от Igor3D Посмотреть сообщение
Выкидывать то что дальше юзается(печатается) в коде компилятор не должен.
Нет, нет, нет, это полнейшая чушь. Очередное вылепливание "своего С++" из каких-то странных домыслов и палок.

Если код производит UB, то в нем по определению ничего не "юзается" и не "печатается". Все эти "юзается(печатается)" - это плод вашего разгулявшегося воображения, фантазии, призванные заполнить непонимание основ языка. Компилятору, разумеется, эти фантазии не известны и не интересны.

Так что - да, должен выкидывать. И выкидывает. И, как хорошо видно по прогрессу версий того же Clang, будет выкидывать все больше, больше и больше.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
15.04.2026, 18:09
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Если код производит UB, то в нем по определению ничего не "юзается" и не "печатается". Все эти "юзается(печатается)" - это плод вашего разгулявшегося воображения, фантазии, призванные заполнить непонимание основ языка. Компилятору, разумеется, эти фантазии не известны и не интересны.
Это у Вас фантастическое воображение , а я просто руководствуюсь здравым смыслом. Выходит код компилируется, но .. не выполняется, причем без всяких exception(s). То есть поставил тестовую печать, а ее .. нету. Выкинули. Бред собачий. Такой придурковатый компилятор никому не нужен. Более реалистично считать неинициализированное значение нулем или др дефаултом. Это возможно, подобное где-то видел. Но уж никак не "выкидывать"
0
15.04.2026, 18:11

Не по теме:

они размножаются о_О

0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
16.04.2026, 14:10
TheCalligrapher,
Прочитал ваш экскурс.
А мне почему то враги запрещают читать неинициализированные переменные.
Мелкомягкие в натуре враги... Проклятые империалисты...
0
16.04.2026, 16:20

Не по теме:

Цитата Сообщение от Наталья8 Посмотреть сообщение
А мне почему то враги запрещают читать неинициализированные переменные.
Никто никому ничего не запрещает.
А поднять Предупреждения до Ошибок можно в любом компиляторе.
Вероятно в настройках проекта по умолчанию стоит опция SDL checks, которая и бьёт по лапкам.

Update: Только это опция для "инвалидов".
И никак не помешает отстрелить себе всё что нужно.
C++
1
2
    int* i = new int;
    std::cout << *i; // use uninitialized variable

0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,416
16.04.2026, 17:40
Вся эта тема бестолковая
Объявить массив как указатель на 1й элемент
Выделить память на n элементов
Заполнить массив значениями
Обработать массив, как надо
Когда уже не надо, отдать память обратно
Конец
Нечего заниматься словоблудием и рукоблудием
Пиши простой код, долб*** (KISS)
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
17.04.2026, 00:28

Как он может мне запретить.. Хочу читать много переменных....
И что бы неиници.,. Былы... Запутался.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
17.04.2026, 00:35
Кодеблок нулём иницылы... Твою мать. Как всё задолбало...

0
-342 / 1 / 0
Регистрация: 27.12.2025
Сообщений: 29
17.04.2026, 11:00  [ТС]
Что Данила-мастер не выходит каменный цветочек?

Добавлено через 58 минут
Моё видение процессов протекающих при объявлении неинциализированных указателей, ну и переменных до кучи (не претендую на истину в конечной инстанции, пытаюсь разобраться для себя).
При компиляции программы с с вышеуказанными объявлениями компилятор (если в нём отключены оптимизирующие режимы) что для указателя, что для переменной рандомно цепляет адрес памяти в куче (объявление внутри функции я не рассматриваю так как там память выделяется на стеке а не в куче, хотя и там ситуация может быть аналогичноя). В рандомно выделенной области памяти что-то уже лежит (или "мусор" или данные используемые какой-то программой или операционной системой, хотя скорее всего оп защищает свои данные так как компилятор по идее запрашивает память именно у оп). При попытке использования неинциализированного указателя или переменной (попытки перезаписи в сопряженные с ними участки памяти новых значений) возникает ситуация пресловутого UB. Если в памяти лежит "мусор", то ничего критического не происходит и всё работает должным образом, а вот если в памяти находятся используемые программами или оп данные, то при их перезаписи может произойти всё что угодно (UB). Так как синтаксис языка позволяет вначале объявить указатель или переменную без инициализации, а присваивать им значения позднее, то это вынуждает компилятор присваивать им адреса в памяти при компиляции (любой объект по определению должен иметь адрес в памяти). Так как подобная ситуация порождает UB разработчики компиляторов пытаются купировать его возникновение. Один из способов выдавать ошибку при компиляции с определенными ключами компиляции, другой принудительно инициировать их нулём (как в приведенном выше примере Наталья8).
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
17.04.2026, 12:38
Цитата Сообщение от Also what Посмотреть сообщение
рандомно цепляет
Ты чё? Угорел?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,569
17.04.2026, 12:44
Наталья8, ты почему C::B не обновляешь? Уже ж давно есть версия 25.03. А ещё лучше, ставь ночную сборку. Например, билд 13831 вышел совсем недавно, 9 апреля. Они там постоянно что-то фиксят. Полтора разраба осталось, но если на них надавить, то профиксят любой баг. Сам я много раз репортил.
0
17.04.2026, 13:56

Не по теме:


Цитата Сообщение от Also what Посмотреть сообщение
Что Данила-мастер не выходит каменный цветочек?
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Традиционно подобные затеи выбрасываются в форум в виде некоего "вопроса", но на самом деле у аффтора вопросов нет: он пришел вещать, а не спрашивать. Детектируются подобные деятели довольно быстро: усваивать то, что им пытаются объяснить участники форума, они не хотят.
Догадываюсь, что во многих случаях (пока не имея в виду нынешний) мы наблюдаем деятельность одного и то го же персонажа, зарегистрировавшего очередной аккаунт.
по специфической манере его постов - я догадываюсь, кто этот персонаж, но пальцем тыкать не стану :)

0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
17.04.2026, 14:40
Royal_X,
Что то тебя видно не было....
Кодеблок? Да не пишу я на нём.. Просто валяеться.
Думаешь они на новой версии более стабильным его сделали?

Добавлено через 6 минут
4blK4blPblK,
Да ну... Таких длинных измышлений, умозаключений (многобукоф), что то я давно не видел.
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,289
17.04.2026, 14:54
Also what, какое странное видение. Даже спустя 4 страницы объяснений

Добавлено через 5 минут
Also what, поздравляю с ачивкой. Когда спокойнейший и терпеливейший обитатель форума вкатывает жирный минус - это достижение, я считаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2026, 14:54

Ошибка, указывающая на неинициализированные переменные
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; int main() { setlocale(0, &quot;&quot;);...

Ошибка: неинициализированные переменные
Требовалось оформить класс ORDER, ошибка на 103-ей строке про неинициализированные переменные,...

Неинициализированные переменные
Здравствуйте. Возникла проблема с инициализацией переменных и конструкторов производного класса,...

Где и как могут применяться неинициализированные массивы?
Хотелось бы узнать где и как могут применяться неинициализированные массивы.

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
сукцессия 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
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru