![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
Халло)
Написал прогу,ну почти написал, и тут на тебе выпрыгивают странные сообщение о баге в проге,которые особо както и не влияют на ход событий(прога дальше работает если нажать на Continue). Когда построил релиз версию и запускаю с под експлорера - все гуд. В чем может быть трабла не подскажите? "падает" на строчке: text = (PWCHAR)malloc( PASSWORD_LENGHT*sizeof(WCHAR) ); м название ф-ции куда указывает студия после глюка: extern "C" static void * __cdecl _nh_malloc_dbg_impl ну и на добавок - прога пишется на Си - VS2008 а и главное забыл - несколько раз эта строчка проходит нормально,но вот после некой работы программы - вылетает прикреплённая снизу сообщуха..... зарание благодарен! Присоединённый файл ( Кол-во скачиваний: 19 )
Bug.jpg 88,56 Kb |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
heap ломаешь - записываешь в выделенный блок больше, чем выделил. уверен, что не (PASSWORD_LENGHT+1)*sizeof(WCHAR) ? lengTH, кстати.
|
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
спасибо
поправлю - "опечатка") и по всему прожекту ctrlC-ctrlV) блин может быть и так что не при маллоке,но суть в том что когда пошагово дебажил вывалилось именно там) но когда просто F5 и тетсить прогу - вываливается то там то сям....и не понять где запорол. Как мона поискать в таком вариатне - или просто код пересматривать весь полностью - только не это ПС. с width и height постоянно морочился что за чем,а теперьеще тут всплыло. Причем странно обычно когда не уверен пользуюсь переводчиком,но видать гугл( translate.google.com) и тут решил подогадоватся что я от него хочу хотел еще спасиб сказать за внимательность! (PASSWORD_LENGTH+1) - он у меня +1 задефайнутый сразу был Это сообщение отредактировал(а) ASMatic - 5.8.2009, 03:20 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
порча кучи у тебя происходит до этого malloc'а - он просто не может корректно отработать в условиях запорченной структуры кучи.
я не в курсе, какие в 2008 "плюшки" в DEBUG версии используются, но если прогон в среде DEBUG'а не дает точного места(или хотя бы с точностью до функции), то можно воспользоваться Application Verifier'ом. |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
хех - оказалось что я (скорей всего)) не правильно окно удаляю,т.е. создал-удалил-создал вот тебе и куча поломаная....удалял его с помощью
DestroyWindow( hWnd ); UnregisterClass ( MyClass ); видать не правильно,т.к сделал на SW_SHOW/SW_HIDE и заработало без "кучи) + при многократном вкл/выкл окна пропала утечка памяти - одним выстрелом двух зайцев спасибо за советики и за Application Verifier' . мож то тему переименовать на "Лучше окна скрывать чем удалять"))))))) |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
подозреваю, что ты не решил проблему, а закопал ее до лучших времен: куча ломается по-прежнему, но т.к. после этого ты ничего не распределяешь, и не освобождаешь, то и проблема не вскрывается если до сих пор не понятно, то любой malloc и free ее вновь откроет, т.е. проблема у тебя не конкретно в этой строке: а где-то раньше, когда (скорее всего) была произведена запись за границы другого блока памяти дело твое, если не хочешь решать проблему, только не нужно ее перекладывать на чужие плечи, DestroyWindow и UnregisterClass тут совершенно ни при чем -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
извиняюсь что "отходил". Возможно ты и прав - куча ламается,но как определить где я её ламаю?
если не трудно подскажите пожалуйста - как узнать что я вышел за границу и когда? может ссылку для почитания или подсказку для догадок |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Наверное, есть и другие способы узнать, где ломается куча, но я пользуюсь таким: просто расставляю по программе ASSERT (_CrtCheckMemory()). Естественно, делать это лучшее не беспорядочно. Т.е. сначала "обложить" нехорошее место, т.е. найти 2 точки - первая, где хип в порядке и вторая - уже вылетает ассерт. И потом локализовать место, добавляя проверки.
-------------------- ... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Earnest, предложила отличный вариант,
остается только поркомендовать наиболее прогрессивный путь на будущее: ознакомиться и активно использовать утилиты по контролю версий типа SVN или CVS, тогда любую ошибку такого рода можно отследить просто тестируя последние "слепки" программы -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
Earnest такую штуку не смотрела ? http://www.microfocus.com/products/DevPart...heckerSuite.asp
я когда-то давно (когда NuMega компания называлась) пробывал (еще под vs2003) много чего интересного показывала... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
устройство заголовка блока кучевой памяти - информация не такая уж секретная: http://www.securitylab.ru/analytics/216376.php
каждый заголовок маркируется на предмет его перезаписи, только это не панацея, повредить блок можно и в обход этих маркеров, лучше всего вникнуть в проблемный код, чем искать под него костыли, а еще лучше - проблемный код не писать вообще ) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Гм, нет, хотя слышала. Ихний профайлер, да, использовала, а до BoundChecker'а как-то руки не дошли: пока хватало простых способов для ловли багов.Только было начнешь лбом об стенку бится и кричать: ну все, берегись, ставлю баунд-чекер, как ошибка тут как тут: ой не надо, вот она я, дура, не буду больше... -------------------- ... |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
Earnest у меня было что в приложении с 150-200 потоками, съедавшее по 5-8 ГБ памяти при работе на x64, раз в две-три недели происходил коллапс одного потока (Access Viоlation), после чего падали остальные потоки (где-то через часок работы) (притом падало только у клиента). С бондс чекером решили проблему за две недели где-то....оказалось в одном месте было нечто вроде (сейчас уже точно не помню) char*p = blablabla; *(p+10) = '\0';, которое и проводило к фатальной ошибке.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |