00001
00002
00003
00004 #include "mymalloc.h"
00005 #include <stdio.h>
00006 #include <malloc.h>
00007
00008 void **mymalloc(int size, int n1, int n2)
00009 {
00010 int i;
00011 void **p, *p1;
00012
00013 p1 = (void *) calloc(n1 * n2, size);
00014 if (p1 == NULL)
00015 {
00016 printf("Can't allocate mymalloc(%d, %d, %d)\n", size, n1, n2);
00017 exit(1);
00018 }
00019 p = (void **) malloc(n1 * sizeof(void *));
00020 if (p == NULL)
00021 {
00022 printf("Can't allocate mymalloc(%d, %d, %d)\n", size, n1, n2);
00023 exit(1);
00024 }
00025 p--;
00026 for (i = 1; i <= n1; i++)
00027 p[i] = (void *) ((long) p1 + n2 * size * (i - 1) - size);
00028
00029 return p;
00030 }
00031