gpt4 book ai didi

c - 当我们用负参数调用 Malloc 时会发生什么?

转载 作者:太空狗 更新时间:2023-10-29 16:32:05 26 4
gpt4 key购买 nike

7.22.3.4 The malloc function The malloc function allocates space for an object whose size is specified by size and whose value is indeterminate.

原型(prototype):void *malloc(size_t size);

我尝试传递一个负值作为参数:malloc(negative) 返回 NULL

是否因为 [size_t] 负数转换为无符号 [一些大值] 并且无法分配所需空间,或者是函数检查参数并返回 NULL

如果它被转换为大正数,那么在调用 malloc(INT_MIN+2) 时它仍然返回 NULL,但是 malloc(0) 分配给指针并且 *p = somevalue 有效。这个呢?

是否定义了实现?

阅读此链接:malloc(0)

最佳答案

即使您将负值传递给 mallocsize_t 值始终为正值。负值转换为 size_t 类型的无符号值,这会导致巨大的正值。

例子:

char *p = malloc(-2);

相当于:

char *p = malloc(SIZE_MAX - 1);  // SIZE_MAX is the maximum
// size_t value

关于c - 当我们用负参数调用 Malloc 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17925771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com