powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамическое удаление объектов
11 сообщений из 11, страница 1 из 1
Динамическое удаление объектов
    #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
Динамическое удаление объектов
    #33960513
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyLabel=new TLabel(NIL); ??
...
Рейтинг: 0 / 0
Динамическое удаление объектов
    #33960514
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой чуть обманул :)

попробуй
Код: plaintext
1.
MyLabel=new TLabel(NULL); 
...
Рейтинг: 0 / 0
Динамическое удаление объектов
    #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
Динамическое удаление объектов
    #33960900
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeartNIL
Говорят, советских разведчиков ловили на том, что они ширинку застёгивали, выходя из туалета ....
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Динамическое удаление объектов
    #33960903
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K. DK> JibSkeart прав, если хочется самому удалять созданные
DK> объекты (в VCL), то не нужно в конструкторе задавать
DK> Овнера, иначе удалением будет заниматься указанный Owner
DK> (в вашем случае - Form1). Т.е. происходит попытка
DK> повторного удаления объекта
Дак попытка повторного удаления будет происходить при удалении формы-владельца объекта. А у автора АВ при попытке ручного удаления. Ставлю на Synchronize, вернее на его отсутствие
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Динамическое удаление объектов
    #33960931
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас JibSkeartNIL
Говорят, советских разведчиков ловили на том, что они ширинку застёгивали, выходя из туалета ....
Posted via ActualForum NNTP Server 1.3
Ага, развелось тут двойных агентов ;))

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

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

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

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


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


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