I know that calloc allocates memory and writes zeroes to each cell, so my question is: is there a difference between using calloc or using malloc and running over the cells writing NULL to them? Are the zeroes of calloc equivalent to NULL?
相关问题
- Multiple sockets for clients to connect to
- What means in Dart static type and why it differs
- What is the best way to do a search in a large fil
- glDrawElements only draws half a quad
- Index of single bit in long integer (in C) [duplic
No, they are not always equivalent, but on most popular machines you'll be fine.
calloc
writes a bit pattern of all-zeros to the allocated memory, but the null pointer value might not be all-bits-zero on some machines (or even just for some types on some machines).Check out the Null Pointers section of the C FAQ for lots and lots of information.
NULL isn't guaranteed to have all bits set to 0, even thought it always compares equal to the integer constant 0.
Calloc will set all of the bits to 0 the same as a memset call would. It is permitted that the resulting value(s) will not compare equal to NULL.
Therefore they are not equivalent.