c++ - 我应该删除 vector<short> 吗?

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

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

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;
}

我想知道之后是否需要删除 vector ,或者这是否自动完成。

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

谢谢。

最佳答案

new 没有分配任何内容,因此没有要delete 的内容。 vector 将在函数退出时超出范围时自动销毁。

关于c++ - 我应该删除 vector<short> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074504/

相关文章:

c++ - const vector 和 const 迭代器之间的区别

c++ - 由于从结构头创建 vector 数组而出现错误 LNK2019?

c++ - 编译器可以优化在堆上分配静态数组的内存管理吗?

c++ - C++ 集合中对象的内存管理

c++ - Linux 网络堆栈何时丢弃收到的 RTP 数据包?

C++ 如何将大小为 4 的 vector<uint8_t> 转换为 32 位 float

c++ - 保持最大尺寸的 vector ?

c++ - 如何访问 MFC 中主对话框的元素?元素是在可视化编辑器 VS 2012 中创建的

c++ - 程序不会运行非常大的数字

c++ - 如何在运行时查看 C 程序的内存布局?