Теория памяти
От: Аноним  
Дата: 29.12.08 12:23
Оценка:
Всем привет.
Народ. Начал вот в С++ с динамической памятью кавыряться и сразу возник ряд вопросов. В книжке не нашел а рыться в сети — это долго

Вот например такой момент


cObject * object = new cObject;
......
object = NULL;


то что я потом обнуляю object может считаться альтернативой delete или же это чтото другое?
И такой момент


cObject * object = GetSomeObjectFromAnywhere();

object = NULL;


Вот здесь как я понимаю этот шаг оправдан. Или же все-таки нет?

И еще такой вопрсик
Захотел я создать поток вот так


..................
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; // И вот тут я ловлю ошибку.


То есть получается, что я якобы второй раз удаляю этот объект (больше никаких оправданий винде найти не смог ).
Но вот проблема в том, что нигде-то я лапами её не убиваю. Может это происходит каким-то автоматом — или же что-то еще.
Как решение (помня что писал в начале топика) я сделал вместо delete s — s = NULL;
Ну вот чую что это вроде не то что я хочу и налицо memoryleak но вот что сделать правльно — падскажет может кто-нибудь??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.