我已经使用以下代码对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就会出现一个峰值。我怀疑是因为重新分配了内存。但我已经使用了reserve,为什么还会这样呢?我试过使用vectorv1(1000)来声明向量,但结果相同。
顺便说一下,如果我将char增加到512,只需要8个push_back,8 * 512大约需要4k内存。这个问题是否与内存分页有关?
谢谢。