in dispenso/concurrent_vector.h [432:449]
void shrink_to_fit() {
constexpr size_t kMaxExtra = 2;
auto binfo = bucketAndSubIndex(size_.load(std::memory_order_relaxed));
// We need to at least skip the first two buckets, since we have those as a single allocation.
size_t startBucket = std::max<size_t>(2, binfo.bucket + kMaxExtra);
for (size_t b = startBucket; b < kMaxBuffers; ++b) {
T* ptr = buffers_[b].load(std::memory_order_relaxed);
if (!ptr) {
break;
}
if (buffers_.shouldDealloc(b)) {
cv::dealloc<T>(ptr);
}
buffers_[b].store(nullptr, std::memory_order_release);
}
}