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

发布了173 篇原创文章 · 获赞 105 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/zhengyanan815/article/details/104498770