![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
динамическая память [D6, Win2k]
jackie © (2002-11-27 08:28:00)Знатоки! помогите пожалуйста!
простейшая ситуация: смотрю и удивляюсь )
finalize ( pointer)
pointer - сто пудов не нулевой
finalize вылетает с EInvalidPointer-ом, равно как и любая другая операция с этим указателем (типа SetLength)
причем время от времени - может сработать, а может не сработать
я наверное с ума сошел - скажите кто-нибудь, пожадуйста, в чем может быть баг
KSergey (2002-11-29 06:24:00) [1]Как верно заметил(а) Ola - сердце разрывается глядючи на страдания.
Но вот если бы вопрос дополнить кодом - возможно, можно было бы помочь чем-то более конструктивным, нежели сострадание...
Koster (2002-11-29 05:25:00) [2]попробуй FreeMem
Tano (2002-11-27 22:29:00) [3]Проверь элементарные вещи: область видимости переменной, соответствие типов. Может быть вызывается для локальной переменной в процедуре, при этом надо помнить, что при входе в процедуру локальные переменные НЕ ИНИЦИАЛИЗИРОВАНЫ, то есть попытка вызвать для неинициализированной переменной finalize - лотерея, так как даже вероятность равенства nil невелика. В таком случае для надежности я перед началом любого использования присваиваю nil.
Юрий Зотов (2002-11-27 09:02:00) [4]Не нулевой - это еще не значит, что правильный. Скорее всего указатель не проинициализирован и содержит любой случайный мусор. Если этот мусор указывает на недоступную программе область, возникает явная ошибка, если же на доступную - то скрытая.
Starkom (2002-11-27 08:56:00) [5]в хелпе же достаточно ясно написано, когда можно использовать finalize.
код надо смотреть
jackie (2002-11-27 08:49:00) [6]конечно не просто pointer
TBooleanDynArray, например
Starkom (2002-11-27 08:44:00) [7]а пойнтер на что? или просто пойнтер?
Ola (2002-11-27 08:35:00) [8]Ну помогите, плиззззз Jackie, а то у меня сердце разрывается, глядя, как он мучается....