gpt4 book ai didi

c++ - 为什么默认情况下不使用 NULL 初始化指针?

转载 作者:IT老高 更新时间:2023-10-28 11:52:21 28 4
gpt4 key购买 nike

谁能解释一下为什么指针没有初始化为NULL
示例:

  void test(){
char *buf;
if (!buf)
// whatever
}

程序不会进入 if,因为 buf 不为空。

我想知道为什么,在什么情况下我们需要一个带垃圾的变量,特别是指向内存中垃圾的指针?

最佳答案

我们都意识到应该初始化指针(和其他 POD 类型)。
然后问题就变成了“谁应该初始化它们”。

嗯,基本上有两种方法:

  • 编译器初始化它们。
  • 开发者初始化它们。

让我们假设编译器初始化了开发人员未明确初始化的任何变量。然后我们遇到了初始化变量并非易事的情况,开发人员在声明点没有这样做的原因是他/她需要执行一些操作然后分配。

所以现在我们的情况是编译器在代码中添加了一条额外的指令,将变量初始化为 NULL,然后添加开发人员代码以进行正确的初始化。或者在其他条件下,该变量可能永远不会使用。许多 C++ 开发人员会在这两种情况下都以增加指令为代价尖叫。

这不仅仅是时间。但也有空间。在很多环境中,两种资源都很宝贵,开发人员也不想放弃。

BUT:可以模拟强制初始化的效果。大多数编译器会警告您未初始化的变量。所以我总是把我的警告级别调到尽可能高的级别。然后告诉编译器将所有警告视为错误。在这些情况下,大多数编译器会为未初始化但已使用的变量生成错误,从而阻止生成代码。

关于c++ - 为什么默认情况下不使用 NULL 初始化指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910832/

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