Есть цикл кода, в котором вызывается 1 функция с 2 разными аргументами - 15 с true и 5 с true.
Результат дебага - ступенчатый рост памяти процесса (ну это ожидаемо с векторами). Но память для векторов для указателей превышает 10Мб, когда указателей в векторе 5-15.
int typeallocator::setlistsize(size_t listsize, bool forced) {
	if (listsize < iters.size()) {
		if (forced) {
			for (size_t i = iters.size(); i > listsize; i--) {
				iters.back()->~iterator();
				iters.pop_back();
			}
			return 0;
		}
		return -1;
	}
	for (size_t i = iters.size(); i < listsize; i++) {
		iters.push_back(new iterator(typesize));
	}
	return 0;
}
вот деструктор итератора
iterator::~iterator() {
	for (stream::stream* s : usedbystreams) {
		s->killstream(0);
	}
	free(pointer);
	usedbystreams.clear();
}
вот структура итератора
struct iterator {
	iterator(size_t typesize);
	~iterator();
	uint64_t id = 0;
	uint64_t type = 0;
	bool isblocked = false;
	void* pointer;
	vector<stream::stream*> usedbystreams;
};
я пробовал как clear так и ~vector, чтобы каждый удаляемый элемент не занимал хоть какого-либо места после удаления, но что-то пошло не так...
Меньше чем за 500 циклов память стала под 20Мб для процесса.
Дебаг памяти показывает, что по каким-то причинам число итераторов растет, а то, что они существуют - говорит, что не был вызван их деструктор.
