使用C++Builder做的远程桌面的问题

wodeshe 2012-12-16 08:39:52
服务端在持续给客户端发送桌面图像大概5分钟左右会出现out of system resource的错误;先贴代码。。
TMemoryStream * imgStream = NULL; //定义数据流
try {
imgStream = new TMemoryStream();
//捕捉屏幕图象并发送
CapImg(imgStream);
//将流的长度发送到客户端,用以判断是否接收完毕
imgStream->Position = 0; //指向文件流开头
//发送文件流到接收端口
ServerSocket1->Socket->Connections[0]->SendStream(imgStream);
}
__finally {
//delete imgStream;
}
上面是服务端向客户端发送图像数据流的代码,我觉得是imgStream没有delete的原因导致系统资源耗尽,但是在如果直接调用delete的话,系统就会报如下错误

所以想问一下各位是不是这里的问题,如果是怎么改???
...全文
431 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodeshe 2012-12-25
  • 打赏
  • 举报
回复
算了,结贴得了
wodeshe 2012-12-17
  • 打赏
  • 举报
回复
引用 2 楼 My_Love 的回复:
ServerSocket1->Socket->Connections[0]->SendStream 这个Stream在发送完后内部delete,所以你在这个发送完之前不要再发! if(!ServerSocket1->Socket->Connections[0]->SendStream(imgStream)) { delete imgStream; } ……
我查了一下BCB的帮助文档,发现在流发送完之后会自动释放掉,也就是说我们不用手动去删除,但是另一个问题,就是在持续发送了一段时间之后就会出现out of system resource的异常,这个是怎么产生的,你知道不?
wodeshe 2012-12-17
  • 打赏
  • 举报
回复
有没有遇到过相同问题的人啊,本人被该问题困扰很久了。。。
My_Love 2012-12-17
  • 打赏
  • 举报
回复
ServerSocket1->Socket->Connections[0]->SendStream 这个Stream在发送完后内部delete,所以你在这个发送完之前不要再发! if(!ServerSocket1->Socket->Connections[0]->SendStream(imgStream)) { delete imgStream; } else { //不要删除Stream }
ccrun.com 2012-12-16
  • 打赏
  • 举报
回复
TMemoryStream *imgStream = new TMemoryStream();
try
{
    ....
}
__finally
{
    delete imgStream;
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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