- 917 名前:デフォルトの名無しさん [2018/12/24(月) 09:11:50.63 ID:PbNokzxn.net]
- >>902
> きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る delete a は a[1][2] や a[3][4][5] などの子配列含む配列a全体の使用メモリをまとめて "再利用" にまわす 一部の要素を残しておきたい事情が無ければ、delete a[1][2]; delete a[3][4][5]; ... のように子配列を個別に deleteする必要は無い たとえば下の(2)は多次元配列bが多次元配列aの使用済みメモリを再利用するので 終了間際のメモリ使用量は(1)(2)どちらも同じになるが、(2)の delete a を消すと倍程度に増える (1) BEGIN{for(i=1; i<=1000000; i++){a[i%10][i]=i}} (2) BEGIN{for(i=1; i<=1000000; i++){a[i%10][i]=i} delete a; for(i=1; i<=1000000; i++){b[i%10][i]=i}} メモリ再利用の仕組みはThe GAWK Manualには書いていないけどAharon Robbinsが↓で回答している https://groups.google.com/forum/#!topic/comp.lang.awk/CKwoes0_63U
|

|