-
Notifications
You must be signed in to change notification settings - Fork 4
/
allocation.c
61 lines (56 loc) · 3.23 KB
/
allocation.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/***********************************************************************************
** Copyright (c) 2011, University of British Columbia (UBC); All rights reserved. **
** **
** Redistribution and use in source and binary forms, with or without **
** modification, are permitted provided that the following conditions are met: **
** * Redistributions of source code must retain the above copyright **
** notice, this list of conditions and the following disclaimer. **
** * Redistributions in binary form must reproduce the above copyright **
** notice, this list of conditions and the following disclaimer in the **
** documentation and/or other materials provided with the distribution. **
** * Neither the name of the University of British Columbia (UBC) nor the names **
** of its contributors may be used to endorse or promote products **
** derived from this software without specific prior written permission. **
** **
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" **
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE **
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE **
** DISCLAIMED. IN NO EVENT SHALL University of British Columbia (UBC) BE LIABLE **
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL **
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR **
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER **
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, **
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE **
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **
***********************************************************************************/
/***********************************************************************************
** allocation.c: memory allocation operations **
** **
** Author: Ameer M. Abdelhadi (ameer@ece.ubc.ca, ameer.abdelhadi@gmail.com) **
** University of British Columbia (UBC), Apr. 2011 **
***********************************************************************************/
#include <stdio.h>
#include <stdlib.h>
/* safe memory allocation */
void *safeMalloc(unsigned int memSize) {
void *mem=(void*)malloc(memSize);
if (!mem) {
printf("-E- memory allocation %u failed! Exiting...\n",memSize);
exit(-1);
}
return mem;
}
/* safe memory reallocation */
void *safeRealloc(void *memBlk, unsigned int memSize) {
void *mem=(void*)realloc(memBlk, memSize);
if (!mem) {
printf("-E- memory reallocation %u failed! Exiting...\n",memSize);
exit(-1);
}
return mem;
}
/* safe memory freeing */
void safeFree(void *memBlk) {
if (memBlk != NULL) free(memBlk);
else printf("-W- An attempt to free NULL pointer has been ignored\n");
}