MiniGUI应用程序使用 Ctrl+c 结束进程,发现产生core文件
2015-02-07 10:02
281 查看
在调试MiniGUI应用程序时,无意中发现使用Ctrl+c 竟然产生了core文件,这明明不符合Linux信号量中默认处理方式,经过一番痛苦的定位。发现是一个无效的资源释放产生的:
情况1:
BITMAP bmWarn;
case MSG_CLOSE:
UnloadBitmap(&bmWarn);
.......
return 0;
变量bmWarn,在作用域中没有使用,而最后调用了释放。给大家提个醒,发现类似情况,请关注资源释放是否合理!!
情况2:
LOGFONT *logfontbig32 = NULL;
......
logfontbig32 = CreateLogFont("FONT_TYPE_NAME_SCALE_TTF", "arial", "ISO8859-1",
FONT_WEIGHT_SUBPIXEL, FONT_SLANT_ROMAN, FONT_FLIP_NIL,
FONT_OTHER_NIL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE,
32, 0);
......
case MSG_CLOSE:
DestroyLogFont (logfontbig32);
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
......
这里释放资源条件不对,正确如下:
case MSG_DESTROY:
DestroyLogFont (logfontbig32);
return 0;
在minigui中,资源释放不正确的话非常容易产生core文件。
情况1:
BITMAP bmWarn;
case MSG_CLOSE:
UnloadBitmap(&bmWarn);
.......
return 0;
变量bmWarn,在作用域中没有使用,而最后调用了释放。给大家提个醒,发现类似情况,请关注资源释放是否合理!!
情况2:
LOGFONT *logfontbig32 = NULL;
......
logfontbig32 = CreateLogFont("FONT_TYPE_NAME_SCALE_TTF", "arial", "ISO8859-1",
FONT_WEIGHT_SUBPIXEL, FONT_SLANT_ROMAN, FONT_FLIP_NIL,
FONT_OTHER_NIL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE,
32, 0);
......
case MSG_CLOSE:
DestroyLogFont (logfontbig32);
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
......
这里释放资源条件不对,正确如下:
case MSG_DESTROY:
DestroyLogFont (logfontbig32);
return 0;
在minigui中,资源释放不正确的话非常容易产生core文件。
相关文章推荐
- 使用gcore工具产生core文件而不杀死进程
- 强制产生死锁的进程结束,产生core文件
- 使用nobody运行的进程无法产生core文件的解决方法。
- linux ulimit的使用,如何产生core文件,调试段错误
- vim使用—移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gd)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ct
- 使用fuser命令结束一个文件的进程
- Linux/ubuntu下core文件的产生与使用
- 使用procdump工具监视已发布的应用程序,如崩溃产生dmp文件进行调试
- 如何给有死锁的进程发送信号,让他产生core文件
- vim使用—移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gd)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ct
- Linux---ubuntu下core文件的产生与使用
- gdb的使用(二) 堆栈跟踪、core文件、连接到其它进程
- Linux/ubuntu下core文件的产生与使用
- 在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。手动产生堆栈文件的方法是使用kill -3
- IIS出现“另一个程序正在使用此文件,进程无法访问。”错误提示的解决办法
- 使用 .NET Compact Framework 2.0 生成 Wi-Fi 发现应用程序
- 使用ASP.NET Global.asax 文件(目前未用到,搜东西时发现的,感觉以后会用的)
- 关于.NET程序中使用Excel对象后,如何结束残留的Excel进程。
- IIS 中 "另一个程序正在使用此文件,进程无法访问!"
- 使用批处理产生日期(时间)文件、文件夹