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

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

14.04.2026, 17:27. Показов 9259. Ответов 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,243
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,243
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,427
16.04.2026, 17:40
Вся эта тема бестолковая
Объявить массив как указатель на 1й элемент
Выделить память на n элементов
Заполнить массив значениями
Обработать массив, как надо
Когда уже не надо, отдать память обратно
Конец
Нечего заниматься словоблудием и рукоблудием
Пиши простой код, долб*** (KISS)
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
17.04.2026, 00:28

Как он может мне запретить.. Хочу читать много переменных....
И что бы неиници.,. Былы... Запутался.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
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,243
17.04.2026, 12:38
Цитата Сообщение от Also what Посмотреть сообщение
рандомно цепляет
Ты чё? Угорел?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
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,243
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
Ответ Создать тему
Новые блоги и статьи
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru