diff options
| -rw-r--r-- | src/include/stdlib.h | 1 | ||||
| -rw-r--r-- | src/lib/stdlib.C | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/include/stdlib.h b/src/include/stdlib.h index e9995128e..ef2859de5 100644 --- a/src/include/stdlib.h +++ b/src/include/stdlib.h @@ -33,6 +33,7 @@ extern "C" void* malloc(size_t); void free(void*); void* realloc(void*, size_t); +void* calloc(size_t, size_t); #ifdef __cplusplus }; diff --git a/src/lib/stdlib.C b/src/lib/stdlib.C index d9fa9e9fc..f0c3fad74 100644 --- a/src/lib/stdlib.C +++ b/src/lib/stdlib.C @@ -77,3 +77,18 @@ void* realloc(void* p, size_t s) return HeapManager::realloc(p,s); } +void* calloc(size_t num, size_t size) +{ + // Allocate a block of memory for an array of 'num' elements, each of them + // 'size' bytes long and initialize to zero + size_t total_size = num * size; + void* mem = NULL; + + if (total_size) + { + mem = malloc(total_size); + memset(mem, 0, total_size); + } + + return mem; +} |

