我有以下代码来传递浮点 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/