std::vector<int> g_refDtlVec;
int main(){
for(int i=0;i<100000000;i++){
g_refDtlVec.push_back(i);
}
printf("sleep \n");
sleep(10);
std::vector<int>(g_refDtlVec).swap(g_refDtlVec);
printf("sleep2 \n");
sleep(10);
std::vector<int>().swap(g_refDtlVec);
printf("sleep3 \n");
sleep(10);
return SUCCESS;
int main(){
for(int i=0;i<100000000;i++){
g_refDtlVec.push_back(i);
}
printf("sleep \n");
sleep(10);
std::vector<int>(g_refDtlVec).swap(g_refDtlVec);
printf("sleep2 \n");
sleep(10);
std::vector<int>().swap(g_refDtlVec);
printf("sleep3 \n");
sleep(10);
return SUCCESS;
}
ps aux|grep 进程名查看
swap确实是立即释放了。
注意:i的数量要足够多,才能看出明显的效果。