gpt4 book ai didi

c - 当我在 malloc 中取消引用 NULL 指针时,为什么我的程序没有出现段错误?

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

我一直使用这种 malloc 风格

int *rc = 0;
rc = malloc(sizeof(*rc));

但是,即使当我调用 sizeof(*rc) 时,它也不会出现段错误,我假设 rc==0,并且我取消引用了一个 NULL 指针。

最佳答案

你并没有真正取消引用任何东西。 sizeof 的参数不会被计算,除非它是一个 VLA。该语言明确允许将您想要的任何“垃圾”作为 sizeof 的参数。该语言保证它不会评估任何东西,只是对表达式的类型执行编译时分析。例如,表达式 sizeof i++ 保证不会改变 i 的值。

该规则的唯一异常(exception)是可变长度数组。 VLA 的 sizeof 的结果是一个运行时值,这意味着参数已被评估并且必须有效。

关于c - 当我在 malloc 中取消引用 NULL 指针时,为什么我的程序没有出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13574421/

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