Ух, жесть, еще один серьезный баг.
В общем у тебя (Mortem) есть класс MGFTEXTURE, в
MGFTEXTURE *MGF::Texture_Add
идет создание по типу: tex = new TGATEXTURE(); или tex = new PNGTEXTURE(); или tex = new JPGTEXTURE();
так вот виртуальная функция Load здесь срабатывает, так как в tex
приведенный указатель к конкретному типу, а вот когда возникает
Remove в void MGF::Texture_Remove(MGFTEXTURE *tex) {
указатель уже MGFTEXTURE !!! соответсвенно вызывается пустой Remove из
MGFTEXTURE, и память через некоторое время кончается и зызы виснет...
сначала я в Texture_Remove перед delete поправил так:
((PNGTEXTURE*)t)->Remove() ...
но потом посмотрел что везде одно и тоже и удалил везде Remove
а в базовом MGFTEXTURE оставил невиртуальный базовый Remove ...
В аттачменте все поправлено и работает ОК.
Последний раз редактировалось wSlava; 15.05.2007 в 01:39.
|