Вот, реализую двух связаныый списко на перл, все ок.
Написал функцию, которая удаляет отдельный элемент и которая удаляет
целиком весь список. Вроде работает. На тест загрузил огромный файл.
и начал топом (top) следить как жрет память: после того как весь список удалился мой скрипт всеравно заберает памяти как и до удаления :((((( Когда же работает эта система зборки мусора? Почему не отдается назад операционке использованая памать? На всякий случай даю скрипт.
Может кто реализовал список тогда плиз поделитесь :)
#!/usr/bin/perl -w
use strict;
my $start = create_list_from_file('a.txt');
print "List created", ', first symbol: "', $start->{SYMBOL}, '"';
<STDIN>;
delete_all_list($start);
print "List deleted", ', first symbol: "', $start->{SYMBOL}, '"';
<STDIN>;
##==
sub create_node {
my $symbol = shift;
my $temp = {
SYMBOL => $symbol,
};
return $temp;
}
sub create_list_from_file {
my($pre_node, $first_node, $new_node, $file_name, $old_eos);
$file_name = shift;
open(IN_FILE, "< $file_name");
$old_eos = $/;
$/ = "";
$pre_node = create_node();
$first_node = $pre_node;
while(<IN_FILE>) {
for(split(//)) {
$new_node = create_node($_);
$new_node->{PRE} = $pre_node;
$pre_node->{POST} = $new_node;
$pre_node = $new_node;
}
}
$pre_node->{POST} = $first_node->{POST};
close IN_FILE;
$/ = $old_eos;
return $first_node->{POST};
}
sub delete_node {
my $deleting_node = shift;
my $post_node = $deleting_node->{POST};
$deleting_node->{PRE}->{POST} = $deleting_node->{POST};
$deleting_node->{POST}->{PRE} = $deleting_node->{PRE};
$deleting_node->{POST} = undef;
$deleting_node->{PRE} = undef;
return $post_node;
}
sub delete_all_list {
my($node) = $_[0];
my $deleted;
while($node) {
$node = delete_node($node);
}
$_[0] = undef;
}
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Странное поведение функции, которая формирует дерево (2018)
- Форум Реализация двусвязного списка (2019)
- Форум Почему не работает скрипт? (2013)
- Форум Решил освоить perl =) (2005)
- Форум Perl + FastCGI + nginx (2009)
- Форум Не могу удалить пакет (2015)
- Форум день матери (2014)
- Форум День матери (2007)
- Форум помогите найти ошибки в следующем перловом коде (2004)
- Форум [ЖЖ] День матери (2009)