术语 | AfxCheckMemory |
释义 | AfxCheckMemory BOOL AfxCheckMemory( ); 返回值:如果没有内存错误,则为非零值;否则为0。 说明: 这个函数使自由内存池有效并在需要时输出错误信息。如果这个函数没有检测到内存冲突,它什么也不输出。 当前在堆中分配的所有内存块都会被检查,包括那些用 new分配的内存,但是不包括那些用直接调用内存分配函数分配的内存,例如malloc函数或者Windows的GlobalAlloc函数。如果发现有内存块存在错误,就会在调试器上输出错误信息。 如果你在程序模块中包含了下面的程序行: #define new DEBUG_NEW 后面对AfxCheckMemory的调用都会显示发生内存分配的文件名和行号。 注意: 如果你的模块中包含了一个或多个串行化类的实现,那么你必须在最后一个IMPLEMENT_SERIAL宏之后包含#define程序行。这个函数仅在MFC的调试版本中起作用。 示例: // AfxCheckMemory的例子 CAge* pcage = new CAge( 21 ); // CAge 是从 CObject.继承而来的 Age* page = new Age( 22 ); // Age 不是从 CObject.继承的 *(((char*) pcage) - 1) = 99; // 破坏前面的保护字节 *(((char*) page) - 1) = 99; // 破坏前面的保护字节 AfxCheckMemory(); 程序的结果如下: memory check error at $0067495F = $63, should be $FD DAMAGE: before Non-Object block at $00674960 Non-Object allocated at file test02.cxx(48) Non-Object located at $00674960 is 2 bytes long memory check error at $00674905 = $63, should be $FD DAMAGE: before Object block at $00674906 Object allocated at file test02.cxx(47) Object located at $00674906 is 6 bytes long |
随便看 |
|
MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。