Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Проверка указателя


Автор: Artemon 1.7.2006, 08:59
Есть указатель, на динамически созданный объект, как проверить является ли указатель рабочим или нет.

В указатель может попадать любой мусор, так что проверка (== NULL) сдесь не подайдет. 

Автор: BreakPointMAN 1.7.2006, 11:28
В общем случае никак. Лучше всего поступать следующим образом -  после объявления указателя инициализировать его значением NULL, то же самое делать сразу после уничтожения динамически созданного объекта. 

Автор: Artemon 1.7.2006, 12:37
Все не так просто.
В процессе работы программы в указатель попадает мусор.

Вот я и хочу эту ошибку поймать. 

Автор: BreakPointMAN 1.7.2006, 13:41
Гм... то есть ты хочешь отдебужить программу и найти то место, где портится содержимое указателя? Или? Поясни, плиз. А лучше всего, сопроводи кодом. 

Автор: Artemon 1.7.2006, 14:37
В общем следущая ситуация:

SocketServer - ждет соединения, как только оно происходит - создается новый поток и я в него передаю указатель от ServerSocket.

Так вот проблема в том, что через некоторое время - указаатель "портится".
Вот уже несколько дней ищу ошибку. 

Автор: _hunter 3.7.2006, 10:47
попробуй IsBadWritePtr/IsBadReadPtr 

Автор: chwind 3.7.2006, 11:46
В Билдере можно устанавливать брек поинты на изменение данных, попробуй Run->Add Breakpoint
А еще в таких случаях помогает Code Guard 

Автор: Fazil6 3.7.2006, 12:50
теоретически может помочь dynamic_cast 

Автор: Artemon 5.7.2006, 10:02
Всем спасибо ошибку нашел.

Цитата

А еще в таких случаях помогает Code Guard  


Уж больно много он ругается на код билдеровских компонент(стандартных) 

Автор: HappyLife 7.7.2006, 09:24
Цитата(Fazil6 @ 3.7.2006,  12:50)
теоретически может помочь dynamic_cast

Интересно как... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)