高手急救命。内存泄漏的问题。项目要翻掉了。金融危机哦
下面的代码哪里内存泄漏啊。怎么改哦?
bool CRecordingControlDlg::LoadRecordingFile(
SPlaybackInformation *pPlaybackInfo,
SRsmTime CueTime
)
{
ERsmCoreReturnCode eRsmCoreRet = RSM_OK;
CRsmCoreApiMovieFile::UnloadFile(pPlaybackInfo->m_MovieFileId);
// 録画データロード
CRsmCoreApiMovieFile::LoadRecording (
pPlaybackInfo->m_MovieFileId,
pPlaybackInfo->m_PlayItem
);
// 通信の確立を最大5秒待つ
for (int i=0; i<50; i++) {
eRsmCoreRet = CRsmCoreApiMovieFile::IsReadyRemoteRecording ( pPlaybackInfo->m_MovieFileId );
if ( eRsmCoreRet == RSM_OK ) {
break;
}
Sleep(100);
}
// メタ再生可能?
if (CRsmCoreApiCamera::CanMetaData(pPlaybackInfo->m_PlayItem.m_sRsmCoreExtendedIdDeviceId) == RSM_OK) {
CRsmCoreApiMetaDataPlayback::LoadFileMetaData (
pPlaybackInfo->m_MovieFileId,
pPlaybackInfo->m_PlayItem.m_sRsmCoreExtendedIdDeviceId.m_lRemoteId
);
}
/////////////////////////////////
SRsmTime startTimecode, endTimecode;
CRsmCoreApiMovieFile::GetStartTime(pPlaybackInfo->m_MovieFileId, startTimecode);
CRsmCoreApiMovieFile::GetEndTime(pPlaybackInfo->m_MovieFileId, endTimecode);
// ファイル情報セーブ
pPlaybackInfo->m_startTimecode = startTimecode;
pPlaybackInfo->m_endTimecode = endTimecode;
pPlaybackInfo->m_playTimecode = endTimecode - startTimecode;
//////////////////////////////////////////////////////////////////////
// 再生ファイルを録画したカメラのIDを登録する
// ImageDecoder の中で、カメラ名称を表示する際に使用する
CRsmCoreApiMovieFile::SetOriginalCameraId(pPlaybackInfo->m_MovieFileId, pPlaybackInfo->m_PlayItem.m_sRsmCoreExtendedIdDeviceId);
//////////////////////////////////////////////////////////////////////
// 再生開始
pPlaybackInfo->m_pSelectedItem->m_pImageControl->SetSpecificCamera( pPlaybackInfo->m_MovieFileId );
pPlaybackInfo->m_pSelectedItem->m_pImageControl->SetRecordingItem( pPlaybackInfo->m_PlayItem );
// 再生ファイルの先頭に PAUSE 状態で移動する
CRsmCoreApiMovieFile::Cue (
pPlaybackInfo->m_MovieFileId,
CueTime.IsEmpty() ? pPlaybackInfo->m_startTimecode : CueTime,
SRsmTime(0,0,0,0,0),
true
);
while (1) {
ERsmCoreCueStatus eCueStatus;
CRsmCoreApiMovieFile::GetCueStatus( pPlaybackInfo->m_MovieFileId, eCueStatus );
if (eCueStatus == RsmCoreCueingFind || eCueStatus == RsmCoreCueingReachedEnd) {
break;
}
Sleep(16);
}
// Audio
// All Monitor Framesのときは選択カメラのみAudioをLoadする.
if(pPlaybackInfo->m_CameraID == m_CurrentCameraID)
{
CLayoutView *pCurView;
((CRsmGUIApp*)::AfxGetApp())->GetDocument()->GetCurrentMainView(&pCurView);
pCurView->m_AudioPlayerController.SetCamera(pPlaybackInfo->m_MovieFileId);
}
// NEXT & PREVIOUS RECORD ITEM 取得
return true;
}