#ident "$URL: svn://elmer/devel/SVN/SDDAS/trunk/libant/Malloc_ext.c $ %D% SwRI" /* * Malloc_ext.c -- Used to allocate a double pointer to data types. */ #include #include #include char ** Challoc(int r, int c) { register int i; /* Loop counter. */ char **ch = NULL; /* double pointer to characters */ ch = (char **) calloc((unsigned) (r + 1), sizeof(char *)); if (!ch) { return NULL; } for (i = 0; i < r; ++i) { ch[i] = (char *) calloc((unsigned) (c + 1), sizeof(char)); if (!ch[i]) { return NULL; } } return ch; } /* * Ch_Free -- Used to free matrix allocated by Challoc (3). */ void Ch_Free(char **ch, int r) { register int i; if (r <= 0) return; for (i = 0; i < r + 1; ++i) { if (ch[i]) free((char *) ch[i]); } free((char *) ch); ch = 0; } /**************************************************************************/ /******************************* S_Config_Free ****************************/ /**************************************************************************/ /* Frees all info associated with this linklist */ int ** IntAlloc(int r, int c) { register int i; /* Loop counter. */ int **ch = NULL; /* double pointer to ints */ ch = (int **) calloc((unsigned) r + 1, sizeof(int *)); if (!ch) { return NULL; } for (i = 0; i < r; ++i) { ch[i] = (int *) calloc((unsigned) c + 1, sizeof(int)); if (!ch[i]) { return NULL; } } return ch; } /* * Int_Free -- Used to free matrix allocated by Challoc (3). */ void Int_Free(int **ch, int r) { register int i; for (i = r; i >= 0; i--) free((char *) ch[i]); free((char *) ch); ch = 0; }