我应该删除vector <short>吗?

时间:2018-10-31 00:02:17

标签: c++ vector memory-management dll visual-studio-2017

我有以下代码来传递浮点向量的值。向量保存音频数据。 但是,接收对象需要一个临时向量,因此我将浮点数转换为短裤,然后将该向量传递给:

HRESULT CApp::PassAudio(ISpTTSEngineSite * pOutputSite, const SPVTEXTFRAG * uFragList, vector<float>&uFloats,int &uSamplesWritten)
{
    vector<short>nShortsFromFloats;
    nShortsFromFloats.resize(uFloats.size());

    for (int i = 0; i < (int)uFloats.size(); i++)
    {
        nShortsFromFloats[i] = (int)(uFloats[i] * 32767);
    }

    //Pass the audio (shorts now!) back to the requesting site
    ULONG iSizeShorts = nShortsFromFloats.size();
    uSamplesWritten += (iSizeShorts * 2);
    HRESULT hr;
    hr = pOutputSite->Write((short *)&nShortsFromFloats[0], (iSizeShorts * 2), NULL);

    if (hr == S_OK)
    {
        //fine :-)
    }
    else
    {
        //some warning
    }

    return hr;
}

我想知道之后是否需要删除引导程序,或者该操作是否自动完成。

我不确定还需要其他哪些信息。我正在DLL中使用此代码。

谢谢。

1 个答案:

答案 0 :(得分:2)

new没有分配任何内容,因此delete没有任何内容。当功能退出时,vector超出范围时将自动销毁。