gpt4 book ai didi

c++ - g++ 与 MS c++ 中未初始化的指针

转载 作者:行者123 更新时间:2023-12-02 02:11:02 25 4
gpt4 key购买 nike

最近,我阅读了一个编码示例,其中解释了以下内容将导致 Visual Studio 中的编译器错误:

int* pointer1;
*pointer1 = 10;

作者声称,由于pointer1在取消引用之前未初始化,因此在Visual Studio中出现以下错误:

C4700: uninitialized local variable "pointer1" used

确实如此。这种情况是有道理的。

但是,如果我使用完全相同的代码并使用 g++ 进行编译,则不会发生编译器错误,并且我可以以任何正常方式自由使用 pointer1

为什么有区别? g++ 是否在初始化之前为 pointer1 分配了地址?

最佳答案

尝试将 -Wuninitialized -Werror 传递给 gcc。此外,-Wmaybe-uninitialized 可能有助于识别导致变量未初始化的执行路径。

旁注:取消引用未初始化的指针是未定义的行为。这意味着编译器可以但不必对其进行诊断。全部责任都归咎于开发人员。

关于c++ - g++ 与 MS c++ 中未初始化的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67752537/

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