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的数量要足够多,才能看出明显的效果。
本文通过一个C++示例展示了如何使用std::vector的不同构造函数和swap方法来有效地管理内存,特别是针对大量数据的情况,演示了如何减少内存占用并即时释放内存。
7万+

被折叠的 条评论
为什么被折叠?



