Re: Теория памяти
От: Vinni-puh Россия  
Дата: 03.01.09 12:37
Оценка:
А>
А>..................
А>cObject * iObject = new cObject;
А>DWORD iThreadID;
А>HANDLE a_HThread;

А>a_HThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadFun, iObject, 0, & iThreadID);
А>..................

А>// Далее уже в потоковой функции

А>DWORD WINAPI ThreadFun(void * arguments)
А>{
А>    cObject * o = (cObject *) arguments;
А>        while(SomeCondition) {
А>        // Что-то там происходит и в итоге решил я цикл покинуть
А>        }

А>        delete s; // И вот тут я ловлю ошибку.
А>


Насколлько я понимаю, под CObjeсt подразумевается MFC-шный класс. Так вот, чтобы MFC как-то работала потоки нужно запускать AfxBeginThread().
Во-вторых MFC-шные классы не следует создавать в одном потоке, а уничтожать в другом. Вылетает на всяких ASSERT_VALID-ах внутри деструкторов. Так что рекомендую либо не наследовать объекты от MFC, либо уничтожать их в том же потоке, в котором они созданы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.