Вопрос : Как I (re-) включает распределение памяти вороха в пределах CWinThread-выведенной функции резьбы типа призванной сразу от InitInstance?

Этот вопрос morphed в «может вы воспроизвести проблему ошибку симптома». - Первый комментарий (от себя) ниже имеет прикрепленный пример программы, поэтому если кто-то имеет теорию о, то может случиться, быстро изменение к примеру программы должно воспроизвести его легк enough.

I создавало функцию резьбы работника обернутую CWinThread-выведенным предметом. (вызвано ThreadProcObject) - сделано

Within режим резьбы (призванный сразу от InitInstance - таким образом побегите () и насос сообщения не начат вверх по) попытка размещать некоторую память вороха (см. режимы Run1 программы примера () или Run2 ()) и, когда ошибка происходит, _malloc_debug () призвано в пределах режима оператора продолжитеного по времени нового () и возвращает NULL.

хотя бы, это был симптом в моей программе orignal, которую я имею пока воспроизвести в прикрепленном sample.

iем первоначально думал что случалось что между призвано конструктор временем CWinThread-выведенного предмета и приурочить режим резьбы вызывает InitInstance (примечанием, прежде чем Run1 () или Run2 () призвано, резьба идет спать сперва ждущ на «задаче op подготавливает» случай), и что некоторая часть (ворох?) изменения смысла, таким образом эффективно выводящ режим и то из строя оператора новый это smogли быть разрешены путем вызывать некоторое соотвествующее Afx…? кажется, что будет режим для того чтобы восстановить смысл вороха, только это рассмотрение wrong

An звонока InitInstance () к ThreadProc (), которое WaitForMultipleObjects-delayed режима вызывает к Run1 () или Run2 () и распределение памяти вызывает в Run1 () или бег (2) должно звенеть колокол если кто-то имеет любые теории о, то как _malloc_dbg () smogло возвратить НУЛЕВОЕ если подходящяя память exists.

I вороха наградит пункты, то если кто-то фактическ может воспроизвести проблему (, то видит комментарий ниже и свою прикрепленную программу) в пределах прикрепленной программы - и объяснить как оно случилось в первом place.
class=

Ответ : Как I (re-) включает распределение памяти вороха в пределах CWinThread-выведенной функции резьбы типа призванной сразу от InitInstance?


Если первоначально программа работает наилучшим образом, то которая хороша.  Вы smogли выйти хорошее достаточно одно, но я все еще думаю что вы должны изменить вашу логику резьбы для того чтобы быть больше ориентированного предмета - по мере того как я упоминал.  По мере того как он стоит, трудно выбрать вверх как вещи работают от смотреть ваше Кодего: вы имеете UI смешанные с функциональностью более низкого уровня.  Тип резьбы modularizes все настолько очень более лучше и делает для более легких чтения, следовательно доводка если что-то должно нужно посмотреть на более последнюю дату.
Но hey, будет вашим проектом…:)
>> вы имеете идею почему, когда она прекращена путем щелкать кнопкой «x», debugger показывает утечки памяти?
Я вижу следующий после того как я начинаю debugger, отжимаю кнопку старта, тогда близко app:

Обнаруженные утечки памяти!
Сбрасывающ предметы - >
{542} нормальный блок на 0x00DB16A0, 16 байт длиной.
 Данные: <>bsp;  &nbsp; &nbsp &nbsp; &nbsp; > A8 15 КОМПАКТНЫЙ ДИСК КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА DB 00
{541} нормальный блок на 0x0003FBE8, 32 байта длиной.
 Данные: <>bsp;  &nbsp; &nbsp &nbsp; &nbsp; > A0 16 DB 00 00 00 00 00 00 00 00 00 00 00 00 00
{526} нормальный блок на 0x00DB3FA0, 28 байт длиной.
 Данные: <>bsp;  &nbsp; &nbsp &nbsp; &nbsp; > 00 00 00 00 КОМПАКТНЫХ ДИСКОВ E8 FB 03 00 КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА КОМПАКТНОГО ДИСКА
Сброс предмета вполне.

Так я добавляю следующий к CWinThreadTestApp:: InitInstance ():

 _CrtSetBreakAlloc (542);
 _CrtSetBreakAlloc (541);
 _CrtSetBreakAlloc (526);

Теперь когда debugger начат, я немедленно получаю пролом отлаживать на линии:

OpRequestQ = (queue*)
    новая коса; // [MAX_CONCURRENT_POLLS+1];

так, добавьте

если delete OpRequestQ (OpRequestQ);

к вашему ликвидатору:)  _CrtSetBreakAlloc реально будет большая функция для того чтобы сделать обширную пользу когда обязательно:)
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us