CArrary SetSize

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,不會重新分配內存。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章