LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

вангую, что скоп там устроен так.

если в скопе 100 переменных, то это массив из 100 адресов этих переменных. и чтобы нормально «чистить ненужное», они аллокированы на куче. доступ к переменной идет по ее индексу в массиве. тогда O(1).

при закрытии скопа, деалокируются все незахваченные переменные. если удалилось все, и нет захваченных - сам массив, он же енврекорд, удаляется… если захваченные есть - весь массив остается в памяти под названием envrecord. там на удаленные элементы стоят нулы, на неудаленные - реальные адреса на куче

Исходная версия alysnix, :

вангую, что скоп там устроен так.

если в скопе 100 переменных, то это массив из 100 адресов этих переменных. и чтобы нормально «чистить ненужное», они аллокированы на куче. доступ к переменной идет по ее индексу в массиве. тогда O(1).

при закрытии скопа, деалокируются все незахваченные переменные. если удалилось все, и нет захваченных - сам массив, он же енврекорд, удаляется… если захваченные есть - весь массив остается в памяти под названием envrecord.