информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Простое пробивание рабочего/провайдерского... 
 400 уязвимостей в процессорах Snapdragon 
 Яндекс неуклюже оправдался за установку... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Мне кажется, что и поэтому тоже, практика ( !ptr ) была б... 06.03.05 07:39  Число просмотров: 1754
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
> Вообще то подходит. Литеральный 0 преобразованный к
> указателю на любой тип является NULL-pointer-ом, хотя его
> двоичное представление может отличаться от представления
> самого нуля (но это уже проблемы компилятора).

Мне кажется, что и поэтому тоже, практика ( !ptr ) была б чище. Меньше неопределённостей и зависимостей от измений и дополнений в стандарты. Если только гарантритуется, что отрицание любого ненулевого указателя результирует в целый ноль (не знаю какой. скорее всего длинный L), то мы сразу получаем в логическом выражении истину или ложь после единственно возможного преобразования.
Если же сравнивать с NULL, то вначале надо prt привети к типу, например, void* (если NULL ((void*)0) ).
Если же #define NULL 0, то в проверке ptr == NULL указатель должен быть приведён к целому типу (какому целому? 0 ничего не говорит о типе, поскольку это литера). Да и приведение указателя к целому типу - бррррр. Так делают, конечно :( , например, передавая в IParam "указатели" на некоторые области памяти, но это другая пестня (только потому, что по другому не сделать).
Если же считать что в вычислении ( ptr == NULL) NULL будет приводиться к типу prt, то дышать немного легче. Но всё равно, то что говорит Алексей чище. Аргумент только один - гарантия приведения любого ненулевого указателя к целому нулю (при этом совершенно всё равно какому).

<programming> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2020 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach