top | item 22871183

(no title)

DougGwyn | 5 years ago

Let's assume the types have been corrected. malloc((size_t)0) behavior is defined by the implementation; there are two choices: (a) always returns a null pointer; or (b) acts like malloc((size_t)1) which can allocate or fail, and if it allocates then the program shall not try to reference anything through the returned non-null pointer. Now, memset itself is required (among other things) to be given as its first argument a valid pointer to a byte array. In particular, it shall not be a null pointer. Tracking through the conformance requirements, if the malloc call returns a null pointer then the behavior is undefined. Thus, you should not program like this.

discuss

order

dhhwrongagain|5 years ago

What observable difference is there between malloc(0) and malloc((size_t)0)?

saagarjha|5 years ago

None.