Всем привет.
Народ. Начал вот в С++ с динамической памятью кавыряться и сразу возник ряд вопросов. В книжке не нашел а рыться в сети — это долго
Вот например такой момент
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 но вот что сделать правльно — падскажет может кто-нибудь??