# \[ruby\_1\_8\] memory leak by Array#flatten?

**URL:** <https://www.ruby-forum.com/t/ruby-1-8-memory-leak-by-array-flatten/138249>\
**Category:** Development\
**Created:** [May 21, 2008, 11:00am UTC](https://www.ruby-forum.com/t/ruby-1-8-memory-leak-by-array-flatten/138249 "2008-05-21T11:00:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hidetoshi\_NAGAI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/49beb7/32.png) [@Hidetoshi\_NAGAI](https://www.ruby-forum.com/u/Hidetoshi_NAGAI)\
**Post date:** [May 21, 2008, 11:00am UTC](https://www.ruby-forum.com/t/ruby-1-8-memory-leak-by-array-flatten/138249/1 "2008-05-21T11:00:08Z")

</div>

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

Array#flatten e$B$Ke(B memory leak  
e$B$,$"$k$N$G$O$J$$$+$H$$$&5$$,$7$^$9!%e(B

e$B\<!$N%9%/%j%W%H$r\<B9T$9$k$H!$e(B

* * *

coords = []  
n = 0  
(-10…300).step(5){|n| coords \<\< [n, 100] }

max\_cnt = 0  
max\_len = 0  
pre\_cnt = 0  
pre\_len = 0  
loop{  
coords.flatten

cnt = 0  
len = 0  
ObjectSpace.each\_object(Array){|obj|  
cnt += 1  
len += obj.length  
}  
p [[cnt, max\_cnt], [len, max\_len]] if pre\_cnt \> cnt || pre\_len \> len

# GC ?

## max\_cnt = cnt if max\_cnt \< cnt max\_len = len if max\_len \< len pre\_cnt, pre\_len = cnt, len }

e$BC\<Kv$K=PNO$5$l$k%m%0$r8+$F$$$k8B$j$Oe(B  
Array e$B%_%V%8%’%/%H$NAm?t$_$h$S$=$N%5%$%:$NAm7W$Oe(B  
GC e$B$,F/$$$FF,BG$A$K$J$C$F$$$k$h$&$J$N$G$9$,!$e(B  
e$B%W%m%;%9$N%a%b%j\>CHqNL$O$I$s$I$sA}Bg$7$F$$$-$^$9!%e(B

e$B\<B9T$7$?%P%$%J%j$Oe(B

$ ruby -v  
ruby 1.8.7 (2008-05-21 patchlevel 5000) [i686-linux]

e$B$G$9e(B (ruby\_1\_8 revision 16505)e$B!%e(B

---

<div class="post-metadata">

**Author:** ![Hidetoshi\_NAGAI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/49beb7/32.png) [@Hidetoshi\_NAGAI](https://www.ruby-forum.com/u/Hidetoshi_NAGAI)\
**Post date:** [May 21, 2008, 2:21pm UTC](https://www.ruby-forum.com/t/ruby-1-8-memory-leak-by-array-flatten/138249/2 "2008-05-21T14:21:37Z")

</div>

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

From: Hidetoshi NAGAI [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: [ruby-dev:34789] [ruby\_1\_8] memory leak by Array#flatten ???  
Date: Wed, 21 May 2008 17:59:32 +0900  
Message-ID: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Array#flatten e$B$Ke(B memory leak e$B$,$"$k$N$G$O$J$$$+$H$$$&5$$,$7$^$9!%e(B

e$B$3$l$G$$$$$N$G$7$g$&$+!)e(B

# Index: array.c

— array.c (revision 16505)  
+++ array.c (working copy)  
@@ -3143,6 +3143,8 @@  
ary = rb\_ary\_pop(stack);  
}

- st\_free\_table(memo);
- return result;  
}

---

<div class="post-metadata">

**Author:** ![Hidetoshi\_NAGAI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/49beb7/32.png) [@Hidetoshi\_NAGAI](https://www.ruby-forum.com/u/Hidetoshi_NAGAI)\
**Post date:** [May 22, 2008, 2:48am UTC](https://www.ruby-forum.com/t/ruby-1-8-memory-leak-by-array-flatten/138249/3 "2008-05-22T02:48:32Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34792] Re: [ruby\_1\_8] memory leak by  
Array#flatten ???”  
on Wed, 21 May 2008 21:20:47 +0900, Hidetoshi NAGAI  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:  
|  
|e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B  
|  
|From: Hidetoshi NAGAI [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
|Subject: [ruby-dev:34789] [ruby\_1\_8] memory leak by Array#flatten ???  
|Date: Wed, 21 May 2008 17:59:32 +0900  
|Message-ID: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
|\> Array#flatten e$B$Ke(B memory leak e$B$,$"$k$N$G$O$J$$$+$H$$$&5$$,$7$^$9!%e(B  
|  
|e$B$3$l$G$$$$$N$G$7$g$&$+!)e(B

e$B3N$+$K$=$NDL$j$G$9$M!#%3%\_%C%H$7$F$\*$-$^$9!#e(B
