CRT显示器的CRT分类有哪几种h2>
OSD调节严格说算是数控方式的一种,能以量化的方式将调节直观地反映到屏幕上
CRT软件如何使用
最近看了周星星 Blog 中的一篇文章:“VC 6.0中内存泄漏检测”,受益匪浅,便运行其例子代码想看看 Output 窗口中的输出结果,可惜怎么弄其输出都不是预期的东西,郁闷了半天,便到水坛里找到周星星,请求他指点一、二,然而未果。没有办法,最后我一头栽进 MSDN 库狂搜了一把,功夫不负有心人,我搜出很多有关这方面的资料,没过多久我便基本上就找到了答案……
首先,检测内存泄漏的基本工具是调试器和 CRT 调试堆函数。为了使用调试堆函数,必须在要检测内存泄漏和调试的程序中添加下面的语句:
#define _CRTDBG_MAP_ALLOC
#include
#include
#include “debug_new.h”
MSDN 如是说:“必须保证上面声明的顺序,如果改变了顺序,可能不能正常工作。”至于这是为什么,我们不得而知。MS 的老大们经常这样故弄玄虚。
针对非 MFC 程序,再加上周星星的头文件:debug_new.h,当然如果不加这一句,也能检测出内存泄漏,但是你无法确定在哪个源程序文件中发生泄漏。Output 输出只告诉你在 crtsdb.h 中的某个地方有内存泄漏。我测试时 REG_DEBUG_NEW 没有起作用。加不加这个宏都可以检测出发生内存分配泄漏的文件。
其次,一旦添加了上面的声明,你就可以通过在程序中加入下面的代码来 告内存泄漏信息了:
_CrtDumpMemoryLeaks();
这就这么简单。我在周星星的例子代码中加入这些机关后,在 VC 调试会话(按 F5 调试运行) Output 窗口的 Debug 页便看到了预期的内存泄漏 dump。该 dump 形式如下:
Detected memory leaks!
Dumping objects ->
c:Program Files…includecrtdbg.h(552) : {45} normal block at 0x00441BA0, 2 bytes long.
Data: 41 42
c:Program Files…includecrtdbg.h(552) : {44} normal block at 0x00441BD0, 33 bytes long.
Data: 00 43 00 CD CD CD CD CD CD CD CD CD CD CD CD CD
c:Program Files…includecrtdbg.h(552) : {43} normal block at 0x00441C20, 40 bytes long.
Data: E8 01 43 00 16 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.
下面是我看过 MSDN 资料后,针对“如何使用 CRT 调试功能来检测内存泄漏问题进行了一番编译和整理,希望对大家有用。如果你的英文很棒,那就不用往下看了,建议直接去读 MSDN 库中的技术原文。
C/C 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C 应用程序正好印证了这句话。在 C/C 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种 各样的征兆:从性能不良(并且逐渐降低)到内存完全耗尽。更糟的是,泄漏的程序可能会用掉太多内存,导致另外一个程序垮掉,而使用户无从查找问题的真正根源。此外,即使无害的内存泄漏也可能殃及池鱼。
幸运的是,Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法。下面请和我一起分享收获——如何使用 CRT 调试功能来检测内存泄漏终端仿真程序, 是连接远程运行UNIX和VMS系统主机的理想选择。它支持VT100,VT102,VT220和ANSI终端仿真,包含基于文件的脚本, 简单易用的工具条等等
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!