в немецкой книге программирования (начиная с 2012 года) под названием "С++ für C-Programmierer" (С++ для программистов C, duh!), которую я купил в качестве ссылки, я нашел следующий раздел в главе о STL (I ' ll перевести сразу для вас, ребята):
Большинство реализаций STL являются щедрыми с точки зрения управления памятью. Выделение векторов в основном выполняется в кусках 1 кбайт для экземпляров. Вырезки не имеют большого значения, если выделить несколько векторов, но это происходит, если вы создаете от десяти до сотен тысяч.
Я не мог найти источник, подтверждающий это. Я знаю, что это зависит от реализации, но я не мог найти ничего, что подтверждает это даже для одной платформы. Cplusplus.com просто заявляет:
[...]
Поэтому, по сравнению с массивами, векторы потребляют больше памяти в обмен на способность управлять хранилищем и динамически развиваться эффективным образом.
Что я пробовал до сих пор?
Я написал небольшую программу на С++, использующую специфическую для OS X функцию malloc_size(), но я никогда не использовал ее, и я уверен, что делаю это неправильно. Если я что-то делаю по строкам:
std::vector<int>* i = new std::vector<int>;
std::cout << malloc_size(i) << std::endl;
Cout просто говорит мне 32
, что вполне может быть размером int и, следовательно, доказать, что автор частично ошибается, но я не очень убежден своими силами.
Кто-нибудь знает лучше или знает ресурс? Спасибо заранее.
С уважением, Carson