Я отлаживаю свою программу на C ++ Win32 в VS2010 и всегда получаю сообщение «Windows запустила точку останова в program.exe».
Я дважды проверил, проверил трижды и проверил в четырехкратном порядкекод.Я не могу найти любую причину, по которой это должно происходить.Но это происходит в один и тот же момент каждый раз, поэтому что-то должно быть.
В нем задействовано довольно много кода (конструкторы, деструкторы, оконные сообщения, выделение и освобождение памяти и т. Д.), Так что это довольноздесь трудно что-то конкретное поставить, но в то же время я понимаю, что без кода вы ничего не сможете сделать, чтобы дать объяснение.
По сути, при нажатии кнопки открывается окно, которое показываеткартинка.Если определенное условие выполнено, я отправляю WM_DESTROY
в это окно и удаляю переменную, которая вызывает деструктор, который вызывает Release()
на моем LPPICTURE
, и освобождаемая переменная устанавливается на NULL
.
Затем, когда пользователь снова нажимает кнопку, он пытается динамически выделить новый экземпляр (точно так же, как это делалось ранее), и именно здесь генерируется точка останова.AFAIK (и я пытался отлаживать это больше часа), конструктор даже не запускается.Кажется, что он разрывается внутри функции new()
для динамического выделения памяти.
Насколько я могу судить, он разбивается на return HeapAlloc(_crtheap, 0, size ? size : 1);
, что в строке 54 или malloc.c
Чтостранно, что когда я запускаю exe вне VS2010, все продолжается нормально.Программа не вылетает и продолжает работать как положено!