I am trying to wrap the creation of a matrix into a function, but I am having problems trying to understand the following code snippet extracted from a book:
// An error checked malloc() wrapper function
void *ec_malloc(unsigned int size) {
void *ptr;
ptr = malloc(size);
if(ptr == NULL)
fatal("in ec_malloc() on memory allocation");
return ptr;
}
I've already check this question:
Do I cast the result of malloc?
And now I now it is not necessary to cast the result. But what I don't understand is the use of malloc(size)
without a sizeof
operator. For example, to create a matrix, lets say int **matrix
I've also created this function:
// An error checked malloc() wrapper function
void **double_ec_malloc(unsigned int size) {
void **ptr;
ptr = malloc(size);
if(ptr == NULL)
fatal("in ec_malloc() on memory allocation");
return ptr;
}
And then I do:
int **matrixA = double_ec_malloc(size);
int i = 0;
for (i = 0; i < size; i++){
matrixA[i] = ec_malloc(size);
The man
of malloc
says:
The malloc() function allocates size bytes and returns a pointer to the allocated memory.
Let size
be 4
, then in ptr = malloc(size)
I am allocating 4 bytes, but if matrix is of type int
. Wouldn't I need sizeof int * 4
? Because right now I think I am not allocating enough memory for an integer matrix.