7.22.3.4 malloc函数
malloc函数用于分配一个对象的空间,该对象的大小由size参数指定,其值为未确定的。
原型:void *malloc(size_t size);
当我将一个负值作为参数传递时,malloc(negative)返回NULL。
这是因为[size_t]负数被转换为无符号数后变成了[某个大值],并且不能分配所需的空间,还是因为该函数正在检查参数并返回NULL?
如果被转换为了一个大正数,那么调用malloc(INT_MIN+2)仍然返回NULL,但是malloc(0)分配给指针,并且*p=somevalue可以工作。这是怎么回事?
这是否是实现定义的?
请阅读此链接:malloc(0)
malloc函数用于分配一个对象的空间,该对象的大小由size参数指定,其值为未确定的。
原型:void *malloc(size_t size);
当我将一个负值作为参数传递时,malloc(negative)返回NULL。
这是因为[size_t]负数被转换为无符号数后变成了[某个大值],并且不能分配所需的空间,还是因为该函数正在检查参数并返回NULL?
如果被转换为了一个大正数,那么调用malloc(INT_MIN+2)仍然返回NULL,但是malloc(0)分配给指针,并且*p=somevalue可以工作。这是怎么回事?
这是否是实现定义的?
请阅读此链接:malloc(0)
size_t
是无符号类型,而ssize_t
则是有符号类型。 - Alexander Oh