Должен ли я удалить вектор <short>? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующий код для передачи значений вектора с плавающей точкой. Вектор содержит аудио данные. Однако принимающий объект ожидает временный вектор, поэтому я преобразовываю числа с плавающей точкой в ​​шорты, а затем передаю этот вектор:

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 голосов
/ 31 октября 2018

Ничего не выделяется с new, поэтому нет ничего для delete. vector будет автоматически уничтожено, когда выйдет из области видимости при выходе из функции.

...