История изменений
Исправление alysnix, (текущая версия) :
вангую, что скоп там устроен так.
если в скопе 100 переменных, то это массив из 100 адресов этих переменных. и чтобы нормально «чистить ненужное», они аллокированы на куче. доступ к переменной идет по ее индексу в массиве. тогда O(1).
при закрытии скопа, деалокируются все незахваченные переменные. если удалилось все, и нет захваченных - сам массив, он же енврекорд, удаляется… если захваченные есть - весь массив остается в памяти под названием envrecord. там на удаленные элементы стоят нулы, на неудаленные - реальные адреса на куче
Исходная версия alysnix, :
вангую, что скоп там устроен так.
если в скопе 100 переменных, то это массив из 100 адресов этих переменных. и чтобы нормально «чистить ненужное», они аллокированы на куче. доступ к переменной идет по ее индексу в массиве. тогда O(1).
при закрытии скопа, деалокируются все незахваченные переменные. если удалилось все, и нет захваченных - сам массив, он же енврекорд, удаляется… если захваченные есть - весь массив остается в памяти под названием envrecord.