首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

100分求为什么会内存泄露,该怎么解决

2012-02-06 
100分求为什么会内存泄露最近在做一个远程视频和屏幕传输程序,出现了一个很奇怪的现像,代码如下:m_recJpg

100分求为什么会内存泄露
最近在做一个远程视频和屏幕传输程序,出现了一个很奇怪的现像,代码如下:
m_recJpg是一个TJpgImage动态创建的对像,有图片信息
VideoRemote是放在窗体上的一个TImage控件

下面是不断的更新内容的部分代码.代码一秒种大约运行15次,在主窗体中运行,没有在线程中。
  VideoRemote.Picture.Bitmap.Canvas.Lock;
  try
  VideoRemote.Picture.Bitmap.Assign(m_RecJpg);
  finally
  VideoRemote.Picture.Bitmap.Canvas.Unlock;
  end;
以上代码加入后就会出现内存泄露的问题,不加都很正常。

加入后VideoRemote上能正常显示视频,如果用鼠标点击,移动窗体时,有可能出现内存泄露问题,但如果没有去动。都比较正常


[解决办法]
不是内存泄露,是访问了无效的内存地址......
[解决办法]
不要以出现这个提示就说是内存泄露,你先跟踪代码看看出错的地方在哪,或许这跟图片无关
[解决办法]

内存地址无效
[解决办法]
直接在Form上绘画 试试
[解决办法]
VideoRemote.Picture.Bitmap.Assign(m_RecJpg);

执行的时候你能保证m_RecJpg 是存在的嘛?
[解决办法]
代码一秒种大约运行15次

也许这个过程访问时地址冲突
[解决办法]

探讨
报错的图片可以下面的网址中拿到
http://www.fzyw.cn/111.jpg

[解决办法]
TImage控件操作的时候加点延时看看

我用TImage。loadfromfile时两次连续执行就要加延时,不然就会显示
Access violation at address 005A08e6 in module'bjhighspeedsys.exe'.Write of address 04d23c82


[解决办法]
检查下 VideoRemote 和 m_RecJpg 的内存情况 在运行的时候断点 如果没问题 那就是其他方面的问题了
[解决办法]
开个线程试试
[解决办法]
m_RecJpg释放了吗?
[解决办法]
1. 检查m_RecJpg时候释放
2. 在适当的位置写 VideoRemote.Picture := nil

热点排行