例如,如果将一个文本文件加载到std :: string中,做了我需要做的事情,然后在其上调用clear(),这会释放保存文本的内存吗?或者我最好只是将它声明为指针,在需要时调用new,并在完成后删除它?
Die*_*ühl 15
调用std::string::clear()仅将大小设置为零.该capacity()不会改变(也不会reserve()荷兰国际集团比当前保留变化的能力存储器更少).如果你想回收为字符串分配的内存,你需要做一些事情
std::string(str).swap(str);
Run Code Online (Sandbox Code Playgroud)
复制字符串str通常只会保留合理数量的内存,并将其与str表示形式交换将安装结果表示str.显然,如果你想要字符串为空,你可以使用
std::string().swap(str);
Run Code Online (Sandbox Code Playgroud)
释放未使用内存的唯一有效方法是使用成员函数shrink_to_fit().使用swap没有任何意义,因为标准没有说使用此操作时将释放未使用的内存.
举个例子
s.clear();
s.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7963 次 |
| 最近记录: |