3 ms·
Neither copy on write nor size checking are specced as part of the calloc() definition. Here's the specification of calloc from the ISO standard: 7.22.3.2 T
by zik 10y ago
Neither copy on write nor size checking are specced as part of the calloc() definition.
Here's the specification of calloc from the ISO standard:
7.22.3.2 The calloc function
Synopsis
#include <stdlib.h>
void *calloc(size_t nmemb, size_t size);
Description
The calloc function allocates space for an array of nmemb objects, each of whose size is size. The space is initialized to all bits zero.
Returns
The calloc function returns either a null pointer or a pointer to the allocated space.
- jblow 10y agoYes, and that is exactly my point. The article says you should use calloc because it provides these optimizations. I am saying no, that's goofy, because it is not specced to provide these optimizations.
- caf 10y agoAn implementation that lets the size overflow and returns a pointer to a block that isn't large enough for "an array of nmemb objects, each of whose size is size" is not conforming with that specification. That specification gives the implementation exactly two options: return NULL, or return a pointer to a block of sufficient size.