![]() |
Менеджер памяти глючит
Вот, набросал тут маленький тестик...
Код:
SuperStrict Может кто-то объяснит мне причину и способ с этим бороться? Или это всё же косяк Макса? У кого есть доступ на офф.форум - может зададите этот вопрос? Был бы очень признателен. |
Re: Менеджер памяти глючит
Ну дык, а я про что говорил. Может надо задавать не автоматическую сборку мусора, а все вручную GCSetMode(2) потом GCCollect(). вообще х.з. надо офф.сайт шерстить день потерять, а может два, для не зареганых там поиска нет...
|
Re: Менеджер памяти глючит
попробуй несколько раз GCCollect() вызывать
|
Re: Менеджер памяти глючит
Если Delete() - встроенный деструктор, то не доверяй ему, переменуй этот метод и используй вместе Base = Null..может поможет :)
|
Re: Менеджер памяти глючит
Не помогает. Т.к. многие объекты создаются и удаляются автоматически.
Т.е. из локальной переменной сразу в TList, а затем просто очисткой TList. К тому же, заналливание всех полей объекта не гарантирует очистку памяти под сам объект. Так что это не выход, это так... |
Re: Менеджер памяти глючит
что значит не помогает ?! если руки не от туда растут
то есно что не поможет :) у меня проект очень хорошо оперирует мегабайтами внутри блицмакса ... и все тут же хорошо освобождается и вообще утечек нет :) я уже приводил пример, все что создается имеет функцию Create и все что удаляется имеет метод Free задача Free тупо удалить все что внутри обьекта потому если у тебя список TList таких обьектов то сначала у всех вызови Free, а потом уже очисти список и приравняй его к нулю все дело в глобальности подхода, у меня такая система используется абсолютно во всех типах игры потому утечек нету |
Гм...
В общем заборол большую часть утечек. Буду думать дальше. Интересный факт: если запихнуть создание и удаление глабального объекта в функцию, то всё работает. Т.е. не стоит создавать глобальные объекты "глобально"... (: Так что распихал пока всё по функциям. (: Всем этим умным указателям реально не хватает принудительного delete. Ну очень не хватает... |
Re: Менеджер памяти глючит
elmortem
если хочешь помучатся в добавок посмотри в blitzmax\mod\brl.mod\blitz.mod\blitz_gc.h и c там есть две команды bbGCRetain и bbGCRelease и собсно bbGCFree первые две управляют через щетчик использований последняя тупо трет участок памяти можно зделать какой нибудь дебаг перебрать все обьекты на уровне либы и узнать что-же не удаляется |
Re: Менеджер памяти глючит
Ну, узнать что не удаляется можно просто пересчитав в логе создавшиеся и удалившиеся объекты... (:
|
Часовой пояс GMT +4, время: 17:06. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot