我有以下代码来传递浮点向量的值。向量保存音频数据。 但是,接收对象需要一个临时向量,因此我将浮点数转换为短裤,然后将该向量传递给:
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中使用此代码。
谢谢。
答案 0 :(得分:2)
new
没有分配任何内容,因此delete
没有任何内容。当功能退出时,vector
超出范围时将自动销毁。