Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 | ||
Всем спасибо ошибку нашел.
Уж больно много он ругается на код билдеровских компонент(стандартных) |
Автор: HappyLife 7.7.2006, 09:24 | ||
Интересно как... |