c-如果在使用malloc之后,它返回了一个NULL指针,而您继续尝试使用该指针,会发生什么



我知道在使用malloc之后,必须确保返回的指针不是NULL,但如果不是呢?

关于将空指针与*运算符一起使用,2011年C标准(委员会草案N1570)在第6.5.3.2条第4段中规定:"如果向指针分配了无效值,则一元*运算符的行为是未定义的。"脚注指出,空指针是无效值。

许多人会认为使用空指针是试图访问具有无效地址的内存,这会导致异常并终止常见硬件和操作系统上的程序。然而,现代编译器及其优化器非常复杂,并对代码执行各种抽象数学转换。结果是,如果您的代码有未定义的行为,可能会发生各种令人惊讶的事情。

以其他方式使用空指针也可能导致未定义的行为,包括将其与->运算符、下标运算符、+-二进制运算符以及关系运算符(<<=>>=)一起使用。

相关内容

  • 没有找到相关文章

最新更新