heapchk.txt
来自「dos 1.0 其中包含quick basic源代码、内存管理himem emm」· 文本 代码 · 共 79 行
TXT
79 行
SUMMARY heapchk heapset heapinfo
#include <tools.h>
long lHeapSize;
long lHeapFree;
long lHeapLargest;
int heapchk ( );
int heapset ( fillchar )
int fillchar;
int heapinfo ( );
long heapsize ( );
long heapfree ( );
DESCRIPTION
heapchk checks the heap for consistency.
heapset sets free nodes in the heap to the fillchar.
heapinfo set the values of lHeapSize, lHeapFree, lHeapLargest. lHeapSize is
the size of the heap in bytes (including headers), lHeapFree is free space
(including headers), lHeapLargest is size in bytes of the largest free node
(doesn't include 2 bytes needed for the header).
heapsize calls heapinfo and if HEAPOK returns lHeapSize else returns
error code.
heapfree, same as heapsize, except returns number of free bytes (including
headers) in heap.
RETURN VALUE
heapchk, heapset and heapinfo return HEALPOK if operation successful.
All return HEAPCANTFIND or HEAPBADNODE if there are problems with the heap.
Since heapsize and heapfree return longs, you must do appropriate casting.
HEAPOK - completed okay, or not initialized yet
HEAPCANTFIND - can't find heap, initial node trashed
HEAPBADNODE - malformed node somewhere in heap
IMPLEMENTATION
EXAMPLE
#include <tools.h>
extern long lHeapSize;
extern long lHeapFree;
main(c, argv)
int c;
char *argv[];
{
flagType fHeapChk;
if ( ( fHeapChk = heapchk ( ) ) != HEAPOK )
fprintf ( stderr, "%s\n", ( fHeapChk == HEAPCANTFIND ?
"Can't find heap" : "Damaged heap" ) );
if ( ( fHeapChk = heapset ( '?') ) != HEAPOK )
fprintf ( stderr, "%s\n", ( fHeapChk == HEAPCANTFIND ?
"Can't find heap" : "Damaged heap" ) );
if ( heapinfo ( ) == HEAPOK )
fprintf ( stderr, "Heap size:%5ld used:%5ld\n", lHeapSize,
lHeapSize - lHeapFree );
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?