ВОПРОС · Q&A

Утечка памяти (malloc)

AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор вопроса
Есть программа .ехе как можно устранить утечку памями постоянно вылазит ошибка
TObjRef<Debug>()->ErrMsg(_T("MALLOC(or NEW) for %lu bytes failed\r\n"), size);
return 1;
}

кстати в %lu присваивается значение size

самое не понятно это то что писали типа ехе править надо я хз но мне кажется скорее всего это vEngine.dll надо смотреть

по крайней мере ошибка туда ссылается
Тег
 
Прогоните программу в отладчике - когда дойдёт до MALLOC,
он вернёт код-ошибки в регистре EAX, по которому можно определить конкретную причину.
Сколько выделяете памяти? Может у системы нет столько свободной?
 
Прогоните программу в отладчике - когда дойдёт до MALLOC,
он вернёт код-ошибки в регистре EAX, по которому можно определить конкретную причину.
Сколько выделяете памяти? Может у системы нет столько свободной?
Там память статическая выделяется +-1,5гб
 
malloc - этот тот же HeapAlloc(), т.е. память выделяется из хипа..
на системах х32 не получится столько выделить за раз,
а на х64 может не быть такого блока непрерывной памяти - попробуй выделять в цикле страницами по 4К и посмотришь, какой объём имеется в наличии. Проблема тут в том, что нужен непрерывный блок памяти, а система не может его найти (имхо)
 
вот такое находили ранее в dll
 

Вложения

  • kvfEk6nUVgc.jpg
    kvfEk6nUVgc.jpg
    232,7 КБ · Просмотры: 518
malloc - этот тот же HeapAlloc(), т.е. память выделяется из хипа..
на системах х32 не получится столько выделить за раз,
а на х64 может не быть такого блока непрерывной памяти - попробуй выделять в цикле страницами по 4К и посмотришь, какой объём имеется в наличии. Проблема тут в том, что нужен непрерывный блок памяти, а система не может его найти (имхо)
выше ответ