Вы не вошли.


в VB я могу вызвать Set MyObject=Nothing сколько угодно раз, даже так на всякий случай, лучше сделать это дважды, чем не сделать вобще. Кстати и под Vb.Net эта моя хорошая привычка осталась поэтому в моем коде сборщику мусора делать практически нечего.
Насколько я знаю, эта команда просто убирает ссылку на объект, но не выгружает его из памяти. Сборщик мусора выгрузит "ненужный" объект тогда, когда ему бдет удобно, даже если вручную обрубить все ссылки.
Вот стандартная конструкция в C#:
for(int i = 0; i < 100; i++)
{
//область видимости переменной i
}
//здесь ссылки на переменную i отсутствуют и она может быть выгружена сборщиком мусора
for(int i = 0; i < 100; i++)
{
//а здесь выделена память под НОВУЮ переменную i
}
//которая опять будет выгружена из памяти сборщиком мусора где-то после этой строкиФишка в том, что что бы ты не делал - сборщик мусора всё равно будет чистить память тогда, когда ему это удобно.
Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun
Вне форума


Не представляю, кому нафиг нужен дельфи, когда есть дотнет.
Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю. (с) Рехтур. Взламывает анусы по ойпи.
Вне форума


pavel2403 пишет:в VB я могу вызвать Set MyObject=Nothing сколько угодно раз, даже так на всякий случай, лучше сделать это дважды, чем не сделать вобще. Кстати и под Vb.Net эта моя хорошая привычка осталась поэтому в моем коде сборщику мусора делать практически нечего.
Насколько я знаю, эта команда просто убирает ссылку на объект, но не выгружает его из памяти. Сборщик мусора выгрузит "ненужный" объект тогда, когда ему бдет удобно, даже если вручную обрубить все ссылки.
Вот стандартная конструкция в C#:for(int i = 0; i < 100; i++) { //область видимости переменной i } //здесь ссылки на переменную i отсутствуют и она может быть выгружена сборщиком мусора for(int i = 0; i < 100; i++) { //а здесь выделена память под НОВУЮ переменную i } //которая опять будет выгружена из памяти сборщиком мусора где-то после этой строкиФишка в том, что что бы ты не делал - сборщик мусора всё равно будет чистить память тогда, когда ему это удобно.
Коллега, ты все перепутал, во втором примере с циклом, переменная уничтожиться вместе с окончанием процедуры, если она это не глобальная переменная, и это пример никакого отношения к ООП не имеет. А вот Set MyObject = Nothing это и есть уничтожение экземпляра объекта. к тому же в VB6 никакого сборщика мусора нет. Дело все в том, что по крайней мере в VB отсуствует наследование реализации а есть наследование интерфейсов. К тому же там реализован механизм абстрактных классов, то есть когда сам объект не создается а только наследуются его свойства и методы дочерними классами через интерфейс. в VB6, у абстрактного класса, может быть только один интерфейс, а вот в VB.Net-сколько угодно.
Господа, вы охуели. Все. ©Cэмен
Вне форума


Коллега, ты все перепутал, во втором примере с циклом, переменная уничтожиться вместе с окончанием процедуры, если она это не глобальная переменная, и это пример никакого отношения к ООП не имеет.
Ну почему же? У Int32 (который в C# имеет псевдоним int) куча интерфейсов и методов, значит он объект. По крайней мере, в С# и VB.Net.
Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun
Вне форума


pavel2403 пишет:Коллега, ты все перепутал, во втором примере с циклом, переменная уничтожиться вместе с окончанием процедуры, если она это не глобальная переменная, и это пример никакого отношения к ООП не имеет.
Ну почему же? У Int32 (который в C# имеет псевдоним int) куча интерфейсов и методов, значит он объект. По крайней мере, в С# и VB.Net.
Гы, точно... извини я и не заметил, потому как далек от синтаксиса C# 
Господа, вы охуели. Все. ©Cэмен
Вне форума


А вот Set MyObject = Nothing это и есть уничтожение экземпляра объекта.
Садись, два. Это уменьшение счетчика ссылок. Когда ссылки уменьшатся до нуля - тогда произойдет уничтожение (ну, должно, по крайней мере).
к тому же в VB6 никакого сборщика мусора нет.
Ну да???
Опять двойка. Он там очень даже есть. Иначе бы программисту надо было вручную вызывать FreeMem. А VB-шники зачастую даже не знают, что это такое. Говорю это, как бывший VB-шник сам.
Не представляю, кому нафиг нужен дельфи, когда есть дотнет.
Моему ебучему (простите) начальству. До кучи с ведущим программистом, олдскульщиком, который прется от чистого С и линукса.
"Фу бля, крохобор вонючий" (с) Svart Testare
Вне форума


DonDublon3, ну так нефиг там работать, сам виноват.
Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю. (с) Рехтур. Взламывает анусы по ойпи.
Вне форума


pavel2403 пишет:
А вот Set MyObject = Nothing это и есть уничтожение экземпляра объекта.Садись, два. Это уменьшение счетчика ссылок. Когда ссылки уменьшатся до нуля - тогда произойдет уничтожение (ну, должно, по крайней мере).
pavel2403 пишет:
к тому же в VB6 никакого сборщика мусора нет.Ну да???
Опять двойка. Он там очень даже есть. Иначе бы программисту надо было вручную вызывать FreeMem. А VB-шники зачастую даже не знают, что это такое. Говорю это, как бывший VB-шник сам.
Me грустно плакает... А если серьезно то на...www.rsdn.ru/forum/vb/743187.flat.aspx и по той же причине, Set MyObject =Nothing это именно уничтожение экземпляра дочернего класса созданного на основе описания виртуального класса. Что обязательно рекомендуется делать после окончания работы с экземпляром класса, во избежание утечки памяти. Вобщем о том, что ты де бывший VBшник лучше мне не заикайся даже, а то я могу оскорбиться сильно и прямо тут же опустить тебя прилюдно по тому же VB 6. Это так, дружеский совет. Я на VB 6 не то что собаку, а три собаки сьел, и в том числе имел на нем и коммерческий успех.
Господа, вы охуели. Все. ©Cэмен
Вне форума


DonDublon3, ну так нефиг там работать, сам виноват.
Ну, это уже другой вопрос.
я могу оскорбиться сильно и прямо тут же опустить тебя прилюдно
Попробуй. Я не корчу из себя доку, но что знаю - то знаю.
А если серьезно то на...http://www.rsdn.ru/forum/vb/743187.flat.aspx и по той же причине, Set MyObject =Nothing это именно уничтожение экземпляра дочернего класса созданного на основе описания виртуального класса.
Ты путаешь присваивание (Set MyObject =Nothing) и вызов метода, который освободит память.
В приведенной тобой ссылке сначала общаются некомпетентные люди, но в реплике Re[7] таки было четко сказано - присваивание понижает счетчик ссылок, объект убьётся когда таковой опустится до нуля. Это стандартное поведение сборщика мусора.
В VB6 сборщик имеется, иначе бы программисту приходилось вызывать освобождение памяти (на практике это значит - убиение объектов) внучную, а этого не требуется. Не путай присваивание и вызов.
"Фу бля, крохобор вонючий" (с) Svart Testare
Вне форума
[ Сгенерировано за 0.008 сек, 7 запросов выполнено - Использовано памяти: 1.72 Мбайт (Пик: 1.81 Мбайт) ]