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