非托管资源创建与释放
2015-11-05 23:09
232 查看
现象:
主程序调用我的DLL库无法运行;异常信息显示
BUG:
Exception:参数无效。
System.ArgumentException
Stack Trace:
在 System.Drawing.Graphics.CheckErrorStatus(Int32 status)
在 System.Drawing.Graphics.DrawString(String s, Font font, Brush brush, RectangleF layoutRectangle, StringFormat format)
在 Nova.Rss.RssToImage.RssItemAsSingleLine(RssItemInfo item, Int32 wndHeight, Bitmap& bmp)
在 Nova.Rss.RssToImage.RssToSingleLineImage(RssInfo rssInfo, Int32 wndHeight, Color backColor, List`1& imgList)
解决过程:
最后将问题锁定到了其中的参数Font font上,替换从上层传入的font为固定的font;异常信息出现在了其他的含有font参数的函数中。
推断,主程序所赋值的最外层接口的Font有问题,该font为接口所在类的一个成员变量。查看外层代码后发现,外层的所传入到类成员变量的font,来自于一个公共的参数库。所以外层传入的这个font并没有问题。
我的dll库这个类含有一个Dispose方法,而这个方法中有一个语句执行的是对成员变量_font的注销操作,问题就出在这里。
外层调用了我的Dispose方法后,导致了外层所用的font的释放。
结论:
释放资源应该遵循谁创建谁释放原则。
主程序调用我的DLL库无法运行;异常信息显示
BUG:
Exception:参数无效。
System.ArgumentException
Stack Trace:
在 System.Drawing.Graphics.CheckErrorStatus(Int32 status)
在 System.Drawing.Graphics.DrawString(String s, Font font, Brush brush, RectangleF layoutRectangle, StringFormat format)
在 Nova.Rss.RssToImage.RssItemAsSingleLine(RssItemInfo item, Int32 wndHeight, Bitmap& bmp)
在 Nova.Rss.RssToImage.RssToSingleLineImage(RssInfo rssInfo, Int32 wndHeight, Color backColor, List`1& imgList)
解决过程:
最后将问题锁定到了其中的参数Font font上,替换从上层传入的font为固定的font;异常信息出现在了其他的含有font参数的函数中。
推断,主程序所赋值的最外层接口的Font有问题,该font为接口所在类的一个成员变量。查看外层代码后发现,外层的所传入到类成员变量的font,来自于一个公共的参数库。所以外层传入的这个font并没有问题。
我的dll库这个类含有一个Dispose方法,而这个方法中有一个语句执行的是对成员变量_font的注销操作,问题就出在这里。
外层调用了我的Dispose方法后,导致了外层所用的font的释放。
结论:
释放资源应该遵循谁创建谁释放原则。
相关文章推荐
- 阿健的iOS开发Demo(应用图标的九宫格排列、看图猜词游戏)
- 20151009字符串函数
- C语言开发Linux下web服务器(支持GET/POST,SSL,目录显示等)
- Access violation at address 004B6031 in module 'navicat.exe'. Read of address 00000004
- android开发中应该注意的问题
- 20150930数据库练习题
- js实现用li进行筛选
- js实现用li进行筛选
- IOS 004 数据的加载方式 懒加载 以及plist文件的读取
- 动态分配二维数组内存
- HDU 5242 Game 贪心
- 钢架型馈线卡
- 达内学习日志Day46:Servlet+Jsp(账务账号列表实战)
- opencv3 实现模版匹配-鼠标事件
- 实体关系之@OneToMany
- spring3 mvc json问题
- 20150929创建数据库,表,增删改查
- 响应式布局--媒体查询
- 线程同步
- hdoj2041(走楼梯 实为Fibonacci数列