Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамическое удаление объектов / 11 сообщений из 11, страница 1 из 1
03.09.2006, 04:19
    #33960492
maxwell
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
Ситуация: в созданном мной наследнике потока TThread есть public свойство Tlabel *MyLabel (указатель на метку). При инициализации потока на главной форме динамически создается эта самая метка MyLabel:

MyLabel=new TLabel(Form1);
MyLabel->Parent=Form1; //теперь метка появилась на форме

когда поток прекращает работу, хорошо бы эту метку динамически прибить. Делаю так:

delete MyLabel;

При выполнении этой строчки возникает исключение "Access violation at address ... in module 'ntdll.dll'. Write of address ..."

В итоге метка-таки удаляется (т.е. на форме ее уже не видно), но как же все-таки удалить ее правильно, без сообщения об ошибке?

Полный код участка, где происходит попытка удаления:

void __fastcall TMyThread::Execute()
{
while(!Terminated)
{
//здесь выполняется код во время работы потока
}

//ПЫТАЮСЬ УДАЛИТЬ!!!
delete MyLabel;
}
...
Рейтинг: 0 / 0
03.09.2006, 09:56
    #33960513
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
MyLabel=new TLabel(NIL); ??
...
Рейтинг: 0 / 0
03.09.2006, 09:58
    #33960514
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
ой чуть обманул :)

попробуй
Код: plaintext
1.
MyLabel=new TLabel(NULL); 
...
Рейтинг: 0 / 0
03.09.2006, 11:12
    #33960525
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
JibSkeart прав, если хочется самому удалять созданные объекты (в VCL), то не нужно в конструкторе задавать Овнера, иначе удалением будет заниматься указанный Owner (в вашем случае - Form1).
Т.е. происходит попытка повторного удаления объекта.

справка
__fastcall virtual TLabel(Classes::TComponent* AOwner) : Stdctrls::TCustomLabel(AOwner) { }

Description

Call TLabel indirectly, using the new keyword, to create a label at runtime.

AOwner is the component, typically the form, that is responsible for freeing the label. It becomes the value of the Owner property.
...
Рейтинг: 0 / 0
03.09.2006, 22:27
    #33960900
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
JibSkeartNIL
Говорят, советских разведчиков ловили на том, что они ширинку застёгивали, выходя из туалета ....
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.09.2006, 22:28
    #33960903
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
Dmitrii K. DK> JibSkeart прав, если хочется самому удалять созданные
DK> объекты (в VCL), то не нужно в конструкторе задавать
DK> Овнера, иначе удалением будет заниматься указанный Owner
DK> (в вашем случае - Form1). Т.е. происходит попытка
DK> повторного удаления объекта
Дак попытка повторного удаления будет происходить при удалении формы-владельца объекта. А у автора АВ при попытке ручного удаления. Ставлю на Synchronize, вернее на его отсутствие
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.09.2006, 23:09
    #33960931
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
Карабас Барабас JibSkeartNIL
Говорят, советских разведчиков ловили на том, что они ширинку застёгивали, выходя из туалета ....
Posted via ActualForum NNTP Server 1.3
Ага, развелось тут двойных агентов ;))

Карабас БарабасСтавлю на Synchronize, вернее на его отсутствие
Потоками пока не баловался (к сожалению), поэтому потоко-зависимых проблем и не учуял )
Зашедулил себе задание, опосля диплома обязательно побалуюсь...
...
Рейтинг: 0 / 0
04.09.2006, 08:35
    #33961091
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
Dmitrii K. Карабас Барабас JibSkeartNIL
Говорят, советских разведчиков ловили на том, что они ширинку застёгивали, выходя из туалета ....
Posted via ActualForum NNTP Server 1.3
Ага, развелось тут двойных агентов ;))

Карабас БарабасСтавлю на Synchronize, вернее на его отсутствие
Потоками пока не баловался (к сожалению), поэтому потоко-зависимых проблем и не учуял )
Зашедулил себе задание, опосля диплома обязательно побалуюсь...

Я не агент, я просто сотрудничаю с обеими сторонами
...
Рейтинг: 0 / 0
04.09.2006, 08:48
    #33961103
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
JibSkeartЯ не агент, я просто сотрудничаю с обеими сторонами
это как раз и называется "двойной агент" :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
04.09.2006, 12:41
    #33961806
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
дык может, сначала надо было его от парента отвязать, а потом удалять? А вообще если по-хорошему, то гуем должен заведовать лишь один поток и ни потоком больше.
...
Рейтинг: 0 / 0
04.09.2006, 14:02
    #33962107
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое удаление объектов
maxwell...При выполнении этой строчки возникает исключение "Access violation at address ... in module 'ntdll.dll'. Write of address ..."...

пастарайтесь сделать синхронные фазы подъёма и опускания вашей нитки... в этих фазах от имени одно и того же потока захватывайте и освобождайте Ваши ресурсы...и о таких проблемах вообще позабудете...


(круглый)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамическое удаление объектов / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]