Я тестировал на СТЛ вектор с кодом ниже:C++ STL вектор резерв
struct structA{
char charArray[256];
}
structA a;
..assign 256 characters to a.charArray
vector<structA> v1;
v1.reserve(1000);
for(int i=0; i<1000; i++){
v1.push_back(a);
}
я понял, что для каждого 16 push_back, есть шип в v1.push_back. Я подозреваю, что происходит перераспределение памяти. Мне интересно, почему это так, так как я уже использую запас? Я попытался объявить вектор с использованием vectorv1 (1000), он также дает такое же поведение.
Кстати, если увеличить char на 512, потребовалось всего 8 push_back, 8 * 512 - около 4k памяти. Будет ли проблема связана с пейджингом памяти?
Спасибо.
Возможно, вместо того, чтобы подозревать, мы смотрим или измеряем? :) – GManNickG
Как это было «осознано»? – Arun
Не могли бы вы подробно описать проблему? Я не понимаю, что происходит? – Narek