Kalau kebetulan menggunakan collection TObjectList, pastikan waktu create objectnya memperhatikan parameternya dengan baik. Kalau ingin memusnahkan masing-masing object di array sendiri, pastikan parameter Createnya diisi False. Jangan dibiarkan saja, karena defaultnya True. Kalau True maka asumsinya si TObjectList yang akan memusnahkan masing-masing objectnya. Sehingga kalau kita hanya panggil constructor Create tanpa parameter (which is dianggap kita tidak akan memusnahkan elemen di array secara manual) lalu kita panggil Free untuk TObjectListnya, dia akan upset. Sepertinya banyak programmer yang terjebak di sini. Mungkin desain TObjectList kurang benar. Seharusnya defaultnya bukan True, tetapi False.
Mau lihat contoh kodenya? Coba tengok di sini.
Untuk constructornya sendiri di Help bisa dilihat:
constructor Create(Collection; AOwnsObjects: Boolean = True);
The AOwnsObjects parameter is a boolean that indicates whether object entries are owned by the list. If the object is owned, when the entry is removed from the list, the object is freed. The OwnsObjects property is set from the value of this parameter. The default is true.
Tulisan ini dibuat sebagai pengingat diri sendiri yang sudah dua kali terjatuh dalam jebakan yang sama, walau rentang waktunya memang sangat berjauhan. :D