高手急救命。内存泄漏的问题。项目要翻掉了。金融危机哦

silverseven7 2008-12-16 11:04:30
下面的代码哪里内存泄漏啊。怎么改哦?


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;
}
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
C_MFC 2008-12-16
  • 打赏
  • 举报
回复
pPlaybackInfo 在那儿申请空间的?估计你没有释放!
teleinfor 2008-12-16
  • 打赏
  • 举报
回复
Japs的代码啊
luowin 2008-12-16
  • 打赏
  • 举报
回复
bool CRecordingControlDlg::LoadRecordingFile(
SPlaybackInformation *pPlaybackInfo,
SRsmTime CueTime
)
改成
bool CRecordingControlDlg::LoadRecordingFile(
SPlaybackInformation &pPlaybackInfo,
SRsmTime CueTime
)
试试
vcPlayer 2008-12-16
  • 打赏
  • 举报
回复
本身代码没看出什么问题,还是检查一下“CRsmCoreApiMovieFile”吧。
liuying1982000 2008-12-16
  • 打赏
  • 举报
回复
帮顶
feeboby 2008-12-16
  • 打赏
  • 举报
回复
围观小日本code
lzg0001 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feeboby 的回复:]
围观小日本code
[/Quote]


.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧