我試圖清除矢量中的所有數據,但未使用memset
更改其大小。但後矢量的memset
操作大小變爲0。這裏是確切的代碼:向量上的memset正在使其大小爲0
std::vector<T> buckets[2];
MAX_BUCKET_SIZE=16;
構造:
std::cout << "Actual size2 0 " << buckets[0].size() << std::endl;
std::cout << "Actual size2 1 " << buckets[1].size() << std::endl;
...
...
while (...){
delete_data(current_bucket);
std::cout << "current bucket ** " << current_bucket << std::endl;
std::cout << "Actual size3 0 " << buckets[0].size() << std::endl;
std::cout << "Actual size3 1 " << buckets[1].size() << std::endl;
}
delete_data
功能:
memset(&buckets[bucket_id], 0, sizeof(buckets[bucket_id]));
buckets[0].resize(MAX_BUCKET_SIZE);
std::cout << "Actual size0 " << buckets[0].size() << std::endl;
buckets[1].resize(MAX_BUCKET_SIZE);
std::cout << "Actual size1 " << buckets[1].size() << std::endl;
在函數
輸出:
Actual size0 16
Actual size1 16
Actual size2 0 16
Actual size2 1 16
current bucket ** 1
Actual size3 0 16
Actual size3 1 0
current bucket ** 0
Actual size3 0 0
Actual size3 1 0
所以你有*陣列的向量*?爲什麼在這個世界上......? – CinCout
不要在向量上執行'memset',這是未定義的行爲。 –
你'memset',即完全clobber,一個* object *,並且奇怪爲什麼會有奇怪的行爲? – DevSolar