Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CMemoryException


Автор: vdm 6.3.2008, 17:16
После нескольких вызовов подряд, 
wchar_t *wszNewStr1 = new wchar_t[(sizeof(wcsNewStr)+sizeof(buff))/sizeof(wchar_t)];

дебугер кидает хэндл ошибку 

Unhandled exception at 0x77e55dea in ммм.exe: Microsoft C++ exception: CMemoryException @ 0x02d6fa28.
Как в дальнейшем от неё избавиться?

Автор: Earnest 6.3.2008, 19:01
Найте причину и устранить

Автор: dizzy1984 7.3.2008, 06:39
Код

delete [] wszNewStr1;

?

Автор: Earnest 7.3.2008, 09:35
Не будет VC на это ругаться (в смысле использование delete и delete[]).
Скорее похоже на то, что vdm где-то выезжает за пределы выделенной памяти, что и обнаруживают отладочные версии delete/new.
 

Автор: vdm 7.3.2008, 10:12
Цитата(Earnest @ 7.3.2008,  09:35)
Не будет VC на это ругаться (в смысле использование delete и delete[]).
Скорее похоже на то, что vdm где-то выезжает за пределы выделенной памяти, что и обнаруживают отладочные версии delete/new.

Похоже ты прав. А как веделить динамическую память, чтобы дебугер не ругался?

Автор: vinter 7.3.2008, 10:19
а ну так тут я накосячил, не совсем правильный пример привел smile
wchar_t *wszNewStr1 = new wchar_t[(sizeof(wcsNewStr)+sizeof(buff))/sizeof(wchar_t) + 1];

Автор: vdm 7.3.2008, 12:30
хм.... на восьмой итерации постоянно кидает хэндл ошибку... всё равно.

Автор: Earnest 7.3.2008, 13:54
Мы ведь не знаем, что ты с выделенной памятью делаешь.
Ясно, что где-то что-то нарушаешь. Если не можешь найти из анализа кода, то попробуй использовать функцию _CrtCheckMemory(). Навтыкай вызовов в свой код и смотри, где орать будет, а потом уже разбирайся, почему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)