43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /* ALLOC.C - Routine to allocate memory and complain if it doesn't work. */ | ||
|  | 
 | ||
|  | /* Copyright (c) 1995-2012 by Radford M. Neal.
 | ||
|  |  * | ||
|  |  * Permission is granted for anyone to copy, use, modify, and distribute | ||
|  |  * these programs and accompanying documents for any purpose, provided | ||
|  |  * this copyright notice is retained and prominently displayed, and note | ||
|  |  * is made of any changes made to these programs.  These programs and | ||
|  |  * documents are distributed without any warranty, express or implied. | ||
|  |  * As the programs were written for research purposes only, they have not | ||
|  |  * been tested to the degree that would be advisable in any important | ||
|  |  * application.  All use of these programs is entirely at the user's own | ||
|  |  * risk. | ||
|  |  */ | ||
|  | 
 | ||
|  | #include <stdlib.h>
 | ||
|  | #include <stdio.h>
 | ||
|  | 
 | ||
|  | #include "alloc.h"
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ALLOCATE SPACE AND CHECK FOR ERROR.  Calls 'calloc' to allocate space,
 | ||
|  |    and then displays an error message and exits if the space couldn't be | ||
|  |    found. */ | ||
|  | 
 | ||
|  | void *chk_alloc | ||
|  | ( unsigned n,		/* Number of elements */ | ||
|  |   unsigned size		/* Size of each element */ | ||
|  | ) | ||
|  | {  | ||
|  |   void *p; | ||
|  | 
 | ||
|  |   p = calloc(n,size); | ||
|  | 
 | ||
|  |   if (p==0) | ||
|  |   { fprintf(stderr,"Ran out of memory (while trying to allocate %d bytes)\n", | ||
|  |       n*size); | ||
|  |     exit(1); | ||
|  |   } | ||
|  | 
 | ||
|  |   return p; | ||
|  | } |