Здравствуйте svpout, Вы писали:
S>Помогите пожалуйста разобраться!
double* r = new double[100 + 1];
double* s = new double[100 + 1];
if (r != NULL) delete [] r;
if (s != NULL) delete [] s;
r = s = NULL;
этот фрагмент точно работает
во-первых и так видно
а во-вторых я даже проверил зачем-то
так что не майся с HeapAlloc а добавляй сюда построчно и смотри когда возникнет проблема.
Кстати что значит "повторное удаление того же блока"? здесь вроде разные блоки удаляются
Здравствуйте svpout, Вы писали:
S>Помогите пожалуйста разобраться!
S>Я выделяю память
S>если откомпилить в Debug то во время освобождения возникает ошибка: Damage: after Normal block (#246) at 0x002fb168.
Тебе же почти по-русски написали

, что память попортил за пределами массива. Не забывай, что последние элементы в твоих массивах имеют индекс
m_ulCommonAmount.
Здравствуйте Pushkin, Вы писали:
P>Здравствуйте svpout, Вы писали:
S>>Помогите пожалуйста разобраться!
P>P> double* r = new double[100 + 1];
P> double* s = new double[100 + 1];
P> if (r != NULL) delete [] r;
P> if (s != NULL) delete [] s;
P> r = s = NULL;
P>
P>этот фрагмент точно работает
P>во-первых и так видно
P>а во-вторых я даже проверил зачем-то
P>так что не майся с HeapAlloc а добавляй сюда построчно и смотри когда возникнет проблема.
P>Кстати что значит "повторное удаление того же блока"? здесь вроде разные блоки удаляются
---------------------------
Спасибо за совет.
Уже построчно смотрел.
Смысл в том, что Debug удаляет, используя HeapFree,
а в Release версии просто выполняется код free(p). Там прямо условие такое стоит.
"Повторное удаление того же блока" Означает, что эти массивы удаляются в программе только один раз.
Меня в принципе Release устраивает, но уж очень неприятно отлаживать, когда ошибка все время появляется.
Спасибо.