Re[3]: С++ free(char*) ошибка.
От: NordWest Россия  
Дата: 11.09.06 07:34
Оценка:
Здравствуйте, NordWest, Вы писали:

NW>Здравствуйте, Draqon, Вы писали:


D>>Здравствуйте, NordWest, Вы писали:


NW>>>Почему постоянно возникают проблеммы с удалением строк?


NW>>>Вот такой код, например:


NW>>> char *zero1;

NW>>> zero1 = new char[32];

NW>>>...


NW>>>free(zero0);


NW>>>На free вылетает ошибка:

NW>>>"
NW>>>Debug Assertion Failed!

NW>>>Program:....exe

NW>>>File: dbgheap.c
NW>>>Line: 1252

NW>>>Expression: _CrtIsValidHeapPointer(pUserData)

NW>>>...
NW>>>Abort|Retry|Ignore
NW>>>"

D>>Если имелось в виду free(zero1), то его надо удалять с помощью delete[], т.к. он был выделен через new[].


NW>Да, это имелось в виду, но с delete тоже не каитит. По началу-то и было у меня везде delete в таких случаях, но отчего-то они приводили к таким ошибкам. По разному попробовал и при использовании free и подборе длины массива char при создании получалось обходить эту ошибку. Но так срабатывает не всегда и ладно, если это происходит не в часто вызываемых функциях, а если нет, то при постоянном вызове память, используемая приложением растет и растет.


Только вот ошибка при этом меняется на:


File: dbgdel.c
Line: 52


Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.