簡體   English   中英

我需要/如何釋放 wstring、wstringstream、向量

[英]Do I need to/How to free wstring, wstringstream, vector

這是我的工作代碼。 我需要在 func() 中清除或釋放 wstring、wstringstream、vector 嗎? 如果是這樣,怎么做? 我看到向量和 wstring 和 wstream 有 a.clear() function。

這個示例程序是為了展示代碼。 我使用 wstringstream、wstring 和向量,其中我有一個分隔字符串,我需要提取並處理列表中的每個項目。

任何有關優化此代碼和/或做家務的建議也值得贊賞。

#include <windows.h>
#include <strsafe.h>
#include <vector>
#include <sstream>

using namespace std;

void func()
{
    WCHAR sComputersInGroup[200] = L"PC1|PC2|PC3|PC4|";
    WCHAR sSN[200]{};

    wstringstream wSS(sComputersInGroup);
    wstring wOut;
    vector<wstring> vComputer;
    while (wSS.good())
        {
        getline(wSS, wOut, L'|');
        vComputer.push_back(wOut);
        }

    INT i = 0;

    while (i < (INT) vComputer.size())
        {
        if (vComputer[i].length() > 0)
            {
            StringCchCopy(sSN, 16, vComputer[i].c_str());
            }
        i++;
        }
}

int main()
{
    for (INT i=0;i<20000;i++)
        func();
}

C++ 中的大多數容器都有兩個數量。 大小(它擁有多少)和容量(它已經分配了多少)。 例如,vector::resize 會更改大小,但除非需要,否則不會更改容量。 vector::reserve 改變容量,但改變大小。
按照慣例,所有 C++ 對象在刪除時都會釋放資源,包括 memory。 如果您需要更多控制,可以使用調整大小/保留功能手動操作 memory。 您還可以將 memory 從 object 中“移出”,使其壽命比 object 本身更長。
但是,默認情況下,C++ 將自行分配/釋放 memory(易於使用/難以濫用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM