Сограждане, не поленитесь чиркнуть пару строчек, кто давно разобрался с предметом... Вопрос в сущности простой. Делаю я в своей С-программе следующее --- HV* hvcmd = newHV(); SV* keystr = newSVpv("str", 4); SV* keybin = newSVpv("bin", 4); SV* strs[2]; SV* bins[2]; strs[0] = newSVpv("str1", 5); strs[1] = newSVpv("str2", 5); bins[0] = newSVpv("bin1", 5); bins[1] = newSVpv("bin2", 5); AV* avstr = av_make(2, (SV**)strs); AV* avbin = av_make(2, (SV**)bins); hv_store(hvcmd, "str", 3, newRV_noinc((SV*)avstr), 0); hv_store(hvcmd, "bin", 3, newRV_noinc((SV*)avbin), 0); AV* inCmds = get_av("g_inCmd", TRUE); av_push(inCmds, newRV_noinc((SV*)hvcmd)); call_argv("q", G_DISCARD | G_NOARGS, NULL); --- Причем делаю это в цикле... В функции q я его собственно печатаю и даллее очищаю: --- sub q { print Data::Dumper->Dump([\@g_inCmd], [qw(g_inCmd)]), " \n"; @g_inCmd = (); } --- В итоге на каждой иттерации получаю массив хешей массивов типа: $g_inCmd = [ { 'bin' => [ 'bin1', 'bin2' ], 'str' => [ 'str1', 'str2' ] }, ...]; Внимание вопрос: объясните дураку почему у меня память течет? Можно ткнуть в конкретное место perlguts или perlapi... Ну простите, не понял я еще до конца как он внутри устроен... ;( игрался я и с strs[0] = sv_2mortal(newSVpv("str1", 5)); и с sv_unref(strs[0]); В общем налицо непонимание... ;-\
Ответ на:
комментарий
от tarle
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от tarle
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Пора бы сделать garbage collection... (2006)
- Форум Не дайте умереть (2002)
- Форум Не дайте умереть (2002)
- Форум Не дайте умереть (2002)
- Форум Не дайте умереть! (2001)
- Форум Не дайте умереть :) (2000)
- Форум не дайте умереть слепым! (2001)
- Форум SQUID! Не дайте умереть (2001)
- Форум не дайте умереть!!! линукс глючит страшно (2001)
- Форум [garbage collection] А как переводят на русский слово ephemeron? (2011)