📄 memtest.c
字号:
/****************************************************************************** SciTech OS Portability Manager Library** ========================================================================** The contents of this file are subject to the SciTech MGL Public* License Version 1.0 (the "License"); you may not use this file* except in compliance with the License. You may obtain a copy of* the License at http://www.scitechsoft.com/mgl-license.txt** Software distributed under the License is distributed on an* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or* implied. See the License for the specific language governing* rights and limitations under the License.** The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.** The Initial Developer of the Original Code is SciTech Software, Inc.* All Rights Reserved.** ========================================================================*** Language: ANSI C* Environment: any** Description: Test program to determine just how much memory can be* allocated with the compiler in use. Compile and link* with the appropriate command line for your DOS extender.** Functions tested: PM_malloc()* PM_availableMemory()******************************************************************************/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <math.h>#include "pmapi.h"#ifdef __16BIT__#define MAXALLOC 64#else#define MAXALLOC 2000#endifint main(void){ int i; ulong allocs; ulong physical,total; char *p,*pa[MAXALLOC]; printf("Program running in "); switch (PM_getModeType()) { case PM_realMode: printf("real mode.\n\n"); break; case PM_286: printf("16 bit protected mode.\n\n"); break; case PM_386: printf("32 bit protected mode.\n\n"); break; } printf("Memory available at start:\n"); PM_availableMemory(&physical,&total); printf(" Physical memory: %ld Kb\n", physical / 1024); printf(" Total (including virtual): %ld Kb\n", total / 1024); printf("\n"); for (allocs = i = 0; i < MAXALLOC; i++) { if ((pa[i] = PM_malloc(10*1024)) != 0) { /* in 10k blocks */ p = pa[allocs]; memset(p, 0, 10*1024); /* touch every byte */ *p = 'x'; /* do something, anything with */ p[1023] = 'y'; /* the allocated memory */ allocs++; printf("Allocated %lu bytes\r", 10*(allocs << 10)); } else break; if (PM_kbhit() && (PM_getch() == 0x1B)) break; } printf("\n\nAllocated total of %lu bytes\n", 10 * (allocs << 10)); printf("\nMemory available at end:\n"); PM_availableMemory(&physical,&total); printf(" Physical memory: %ld Kb\n", physical / 1024); printf(" Total (including virtual): %ld Kb\n", total / 1024); for (i = allocs-1; i >= 0; i--) PM_free(pa[i]); printf("\nMemory available after freeing all blocks (note that under protected mode\n"); printf("this will most likely not be correct after freeing blocks):\n\n"); PM_availableMemory(&physical,&total); printf(" Physical memory: %ld Kb\n", physical / 1024); printf(" Total (including virtual): %ld Kb\n", total / 1024); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -