Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886

Допустимые операции с нулевым указателем

20.04.2015, 09:28. Показов 7149. Ответов 121
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не if (all) delete all;, а delete []all;

Не по теме:

если че, ТС не я :D
Это вырезано из другой темы (не моей) и создана как отдельная.



 Комментарий модератора 
Эта ветка была вырезана из другой темы, т.к. количество оффтопа превысило все допустимые рамки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2015, 09:28
Ответы с готовыми решениями:

Операции с указателем к char[]
Есть некая структура, например WNDCLASSA, где её члены: typedef struct tagWNDCLASSA { UINT style; WNDPROC ...

Что будет с указателем после использования операции delete?
Имеется код: #include <iostream> using namespace std; int main() { int *wtf_ptr; wtf_ptr=new int(8);

В чем разница между указателем и указателем на указатель?
int x, *p, *q; x=10; p=&x; q=p; cout<<*q; int x, *p, **q; x=10; p=&x; q=&p;

121
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
20.04.2015, 19:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
росто к тому что Билдер не Дельфа, он не для формошлепства а для серьезных задач.
ой ли подход то один и тот же
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.04.2015, 19:10
Цитата Сообщение от ValeryS Посмотреть сообщение
нахрена козе баян пара файлов привязки к железу, все остальное стандартный код, и никаких проблем
Вот так собственно Керниган и Ритч и мыслили себе С. точно так же его мыслит и борланд - пару файлов привязки к железу и смена паттернов под другой машкод - и шлепаем формы для ATTiny

Добавлено через 38 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
ой ли подход то один и тот же
Подход к чему?

Добавлено через 4 минуты
Цитата Сообщение от daslex Посмотреть сообщение
Изначально появилась необходимость в принятии стандарта, чтобы не было слишком больших различий между одним языком.
Тогда было два перспективных языка. Один жестко стандартизировали. Называется Ада. Тошнило от нее всех и долго (Вирта к тому времени вообще шиза готобоязни и указателефобии зажрала).
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2015, 19:19  [ТС]
Я о С++ и только о С++. Ни С ни Ада тут не причем. Стандарт С++ появился не в первый год жизни С++

Добавлено через 3 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но с тем насколько бурно развиваются в последнее время процы
а как бурно они будут развиваться? Их больше маркетологи чем технологи развивают.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как бы что вы вызовете что и как надо я лично не сомневаюсь
зато я сомневаюсь :D

0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.04.2015, 19:28
Цитата Сообщение от daslex Посмотреть сообщение
Стандарт С++ появился не в первый год жизни С++
Чтобы что то начали стандартизировать оно должно быть либо широко распространено (С++) либо куплено Пентагоном (Ада). А по поводу стандартизации - появляется как и компиляция расширений синтаксиса (борланд-MS -Intel) так и возможность юзать lib-ы в чужом формате, а то и чужой компилятор цеплять к своей IDE. Так что получается свой комитет по стандартизации, и ложили они на все остальные комитеты, потому как процы(машкод), ОС и нововведения в синтаксисе/разработке/подходу к проектированию именно эта троица двигает, а соответственно они будут подстраивать язык под свои нужды, а не подстраиваться под какой то коммитет. Диалекты для микроконтроллеров не берем, там отдельная песня и STL лямбды и foreach там сто лет не улыбалась (там такие отклонения от нормы лечатся ассемблерными вставками), а там где улыбалось оно уже обогнало по производительности/возможностям видео и переферии те компы на которых Билдер и VS начинали.
А все попытки что то там еще в STL стандартизировать чтоб safe-pointers и програмист даже забыл что у массива есть размер, ну это по большому счету попытка плюсы шарпнуть, но при этом типа чтоб плюсами остались. Вообще кстати только здесь узнал что основными плюсами плюсов считается STL(наверное кресты). Всегда думал что главные плюсы - добавление ООП, перегрузки операторов и т.п.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2015, 19:34  [ТС]

Не по теме:

точно с таким же успехом можно сказать и о boost. Это бред, что основные плюсы плюсов STL. Просто это одно из удачных решений.



Добавлено через 58 секунд
Чего там с компиляторами?
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.04.2015, 19:43

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
зато я сомневаюсь
:rofl:
Ниче, даже если промажете то при помощи долбаггера :-| и матери которая в святом писании точно не упоминалась :gwitch: после некоторых усилий :wall: все вернете на место и вызовите куда надо. Сам недавно искал почему рекурсия в деструкторах не доконца отрабатывает. Оказывается менял направление перебора с плюса на минус и на автомате поменял < на > А надо было на >=. Главное что мы при виде строчки
C++
1
delete this;
не мыслим вот так:=-O:help:



Добавлено через 5 минут
Цитата Сообщение от daslex Посмотреть сообщение
Чего там с компиляторами?
А что с компиляторами - у интела поддержка AVX на уровне оптимизатора, У борланда inline asm инструкции понимает но сам в код ни сует - значит что-то знают и выжидают. скорее всего новый набор команд который определит направление перехода к арифметике над массивами.

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
ой ли подход то один и тот же
Ну да. Я вот подоумываю не выкинуть ли из текущего большого проекта последнюю форму чтобы не мешала.
0
20.04.2015, 19:47  [ТС]

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
У борланда inline asm инструкции понимает но сам в код ни сует -
это проделки маркетологов, а не бурное развитие.

0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.04.2015, 20:00

Не по теме:

Цитата Сообщение от daslex Посмотреть сообщение
это проделки маркетологов, а не бурное развитие.
Не ну тада уже сразу в compute shader компилить, что там эти 35-350 гигафлопс проца против 2500-5000 гигафлопс видюхи.



Добавлено через 4 минуты
Цитата Сообщение от daslex Посмотреть сообщение
Чего там с компиляторами?
А вот кстати bcc64 в отличии от bcc32 не идет по деструкторам.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.04.2015, 20:16  [ТС]
пойдет ли по деструкторам'
Цитата Сообщение от ForEveR Посмотреть сообщение
Fulcrum_013, Не пойдет. Если пойдет значит компилятор не следует стандарту.
Даже собственного стандарта удержаться не могут. Куда им до тех, на которые ориентируются программисты.

Добавлено через 1 минуту
...
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот кстати bcc64 в отличии от bcc32 не идет по деструкторам.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.04.2015, 20:45
Цитата Сообщение от daslex Посмотреть сообщение
Даже собственного стандарта удержаться не могут. Куда им до тех, на которые ориентируются программисты.
Я так подозреваю появилась возможность совмещать либы от майкрософта с либами от борланда, а значит унифицировали манглинг. соответственно появилась возможность импортировать классы из статически подгружаемых DLL. соответсвенно пришлось унифицировать и этот аспект
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
21.04.2015, 09:23
Судя по всему в обсуждении имеет место легкое недопонимание стандарта. Давайте посмотрим еще раз (м.б. косяки в нумерации так что извиняйте). Пункт 5.3.5/7
If the value of the operand of the delete-expression is not a null pointer value, the delete-expression will call a deallocation function (3.7.4.2). Otherwise, it is unspecified whether the deallocation function will be called.
Здесь говорится о том, что стандарт не специфицирует (т.е. не требует) вызова деаллокатора любого вида для nullptr указателя. Оно и понятно, смысла по большому счету-то не много. НО. Как мы видим, если вдруг разработчик компилятора все же решит встроить такой вызов, то, как видно из текста, такой случай автоматически попадает под ограничения из упомянутого (3.7.4.2). Давайте посмотрим на него.
The value of the first argument supplied to a deallocation function may be a null pointer value; if so, and if the deallocation function is one supplied in the standard library, the call has no effect.
Все вроде бы понятно. Тут делается акцент на требовании не делать абсолютно ничего если будет вызван стандартный деаллокатор, но не наложено никаких ограничений на "пользовательские". Очевидно, что такие должны быть написаны грамотно. Но как эти пункты работают в паре? А рассмотрев их оба, можно сделать следующий вывод, который, кстати, не будет идти вразрез. А именно.
Поведение будет считаться определенным (well-defined) если:
1) используется стандартный деаллокатор;
2) используется пользовательский деаллокатор, который корректно обрабатывает nullptr.
Собственно все.
0
21.04.2015, 11:08

Не по теме:

Весеннее обострение что-ли началось :D

0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
21.04.2015, 13:10  [ТС]
HighPredator, да не в этом дело. Тему полностью не читали. У нас стандарты - это устаревший материал. Ветхий завет своего рода.
А Новый завет - это у нас Builder. Он выше всех стандартов. Типа стандарт под Builder подгонять будут.
И не поймите меня неправильно. Это не мое мнение.

При этом вопрос не про nullptr, а про NULL, проверки перед удалением и удаление со скобками [],
C++
1
 if (all) delete all; //удалили массив
95% ориентируются на стандарт и говорят, что проверка не обязательна и это UB
а 5% убеждены, что проверка обязательна, но при этом скобки [] вообще лишний хлам
(речь об высвобождении памяти выделенной для массива)

Добавлено через 6 минут
И если что, Стандартом не убедить. Стандарт - изжитки прошлого Такие вот дела.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.04.2015, 17:52
Цитата Сообщение от daslex Посмотреть сообщение
а 5% убеждены, что проверка обязательна,
скажем так по трассировке bcc32 идет по деструкторам, bcc64 нет. Соответственно если код делается и под 32 и под 64 то придется ставить проверку.
Цитата Сообщение от daslex Посмотреть сообщение
о при этом скобки [] вообще лишний хлам
Если менеджер кучи сделан толково то [] они таки не нужны.

Добавлено через 9 минут
Цитата Сообщение от daslex Посмотреть сообщение
И если что, Стандартом не убедить. Стандарт - изжитки прошлого Такие вот дела
компилятор - инструмент. и если я этот инструмент использую то наиболее авторитетным взглядом на то каким он ДОЛЖЕН быть будет мой взгляд. Точно так же на то каким он должен быть при использовании вами наиболее авторитетным есть ваш взгляд. Ну а реально он такой как увидел Borland, Microsoft, Intel и т.д. Вообще я так считаю надо идти не по пути жесткой стандартизации синтксиса, а по пути увеличения гибкости настройки парсера и кодогенератора, при этом сами настройки тоже писать в заголовочную часть. Тогда получим очень гибкий инструмент, способный подстраиваться пофайлово под любой уже существующий код, и под потребности программера. Т.е. будет позволять объеденить в результате в одном проекте код к примеру написаный мной и вами, при том что мы даже не знаем какие настройки компилятора друг у друга. Builder в этом плане штука наиболее продвинутая, т.к умеет даже вообще заменить парсер на парсер другого языка
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
21.04.2015, 18:31  [ТС]
Да Вы не меня убеждайте. Я еще в яслях
Я ни один компилятор не называл плохим НИКОГДА. Если компилятор полностью позволяет решать возникающие задачи, то этого компилятора достаточно, чтобы решать возникающие задачи.

Если для решения задач подходит Turbo C, значит Turbo C хороший компилятор для решения этих задач.
Если Buider, то Builder хороший компилятор
и т.д.

Дело не в этом.
В идеале должно быть так, что ВСЕ компиляторы придерживаются единой документации и поддерживают ее. В то же время любой из компиляторов обязан развиваться, поэтому отклонения от стандарта неизбежны, а уж если отклонения признали разные сообщества, то эти отклонения должны включаться в новые стандарты.

А у нас что, а у нас - БАРДАК.
Если используешь то, что не придерживается ни общепринятого стандарта, ни даже своего собственного, то проверки нужны вообще абсолютно везде. Либо нужно досконально изучать стандарт своего инструмента.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.04.2015, 18:47
Цитата Сообщение от daslex Посмотреть сообщение
В идеале должно быть так, что ВСЕ компиляторы придерживаются единой документации и поддерживают ее.
В идеале все компиляторы должны выдавать единый псевдокод на выходе парсера, в не зависимости от синтаксических расширений и настроек самого компилятора, которые желательно сделать по возможности как можно более гибкими. По такому пути идут как Borland, у которого вообще можно паскалевский парсер поставить, так и Microsoft, у которой есть вообще единый псевдокод, в который сначала компилят все языки ее разработки, а потом уже из него происходит кодогенерация.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
21.04.2015, 18:56  [ТС]
Ну и на что им ориентироваться, чтобы выдавать единый псевдокод. Друг к другу в офисы бегать?

Добавлено через 2 минуты
В идеале должен быть только 1 компилятор
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.04.2015, 19:04
Цитата Сообщение от daslex Посмотреть сообщение
В идеале должен быть только 1 компилятор
И я о том же. А в качестве его настроек - диаграммы Бэкуса-Наура Собственно говоря реализацию этого сейчас и пишу.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
21.04.2015, 19:05  [ТС]
и этот компилятор bcc
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.04.2015, 19:08
Цитата Сообщение от daslex Посмотреть сообщение
и этот компилятор bcc
Ну если мыслить как учили в ликбезе - то это компилятор блок-схем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2015, 19:08

Переделать функцию c указателем на int, на функцию с указателем на void
Есть рабочий код qsort для int: void qsort(int *base, int n) { // Прекратить если количество элементов меньше либо равно единице....

Допустимые операции для стека
Из стека нельзя выводить без удаления, так что так он по идее и должен себя вести, если только не прикручен для наблюдения.

Перечислите операции, допустимые для переменных-массивов
Здравствуйте. Я не могу понять вопрос, имеется введу что можно делать с элементами массива? Или с самими массивами? Нашёл только,...

Перечислить допустимые операции при работе с очередью
бырее ктонить плз Добавлено через 30 минут эгээй К слову бырее: Правила п.5.1. Уважительно относитесь к другим участникам...

Хранимые процедуры (допустимые операции внутри тела)
Подскажите пожалуйста: как я понял, в хранимых процедурах запрещается выполнять операции по модификации таблиц(добавление, редактирование)...


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru