| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
Интересно как... |