/* Based on the code in Peter van der Linden, Expert C Programming: Deep C Secrets, SunSoft Press, 1994, p. 177 Modified by Mark A. Sheldon, 15 Feb 2005 */ #include #include #define KB 0 #define MB 1 int main(int argc, char *argv[]) { int which, allocated[] = {0, 0}; size_t chunksize = 0; if (argc != 2) { fprintf(stderr, "Usage: %s {M,K}\n", argv[0]); exit(1); } if (!strcmp(argv[1], "K")) { which = KB; chunksize = 1<<10; /* 1 kilobyte */ } else if (!strcmp(argv[1], "M")) { which = MB; chunksize = 1<<20; /* 1 megabyte */ } else { fprintf(stderr, "Usage: %s {M,K}\n", argv[0]); exit(1); } while (malloc(chunksize)) ++allocated[which]; printf("Allocated %d %s\n", allocated[which], (which == KB)? "KB" : "MB"); } /* main() */