CArray 使用不當會產生內存碎片,應先調用SetSize(),但具體怎麼用還不是太清楚,先看代碼:
運行結果:
1, 0x2bcf58, 0x2bcf98, 2
2, 0x2b9e78, 0x2b9e78, 2
3, 0x2b9ec0, 0x2b9ec0, 80
從以上結果看出,第一種方法未用SetSize是錯的,執行arr1.Add( 2 )時會重新給第一項分配內存,內存地址變了(0x2bcf58, 0x2bcf98),第二、三種方法正確,添加元素時,不重新分配內存,內存地址不變。
1.SetSize(INT_PTR nNewSize, INT_PTR nGrowBy)並不預分配內存,在第一次執行Add或InsertAt時分配nGrowBy內存,用完時再分配nGrowBy內存。
2. RemoveAll將銷燬已經分配的內存,下次調用Add時再分配。如果頻繁清除時請使用RemoveAt,不會重新分配內存。