为什么访问未初始化的指针不显示错误?
Why doesn't accessing an uninitialized pointer display an error?
如果我有一个矩形
class Rectangle{
private:
double width;
double height;
public:
void Set(double w , double l){
width = w;
height = l;
}
};
和我声明一个对象:
Rectangle *Obj;
,然后使用Set函数
Obj->Set(6.0, 9.0);
程序运行并没有显示错误,而根据我的说法,它应该显示一个错误,因为我没有初始化指针。
使用未初始化的指针是未定义的行为。这意味着实现可以做任何它想做的,或者什么都不做。
行为只是没有定义
我刚刚在Visual studio中编译了这个,我得到了下面的错误。可能是您选择的编译器没有这些检查?你正在使用的编译器是什么?
error C4700: uninitialized local variable 'Obj' used
访问未初始化的指针的值——更不用说对其解引用了——会产生未定义的行为。
未定义行为的本质是允许任何结果,但没有任何特别的要求。"any"这个词的含义非常广泛....发出错误消息是正确的。不发出错误消息是正确的。重新格式化硬盘并安装不同的操作系统是正确的(尽管在实践中不太可能)。
相关文章:
- 显示错误输出的简单数组排序程序
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- Clion显示错误,但可以使用Cmake成功构建代码
- 代码使用向量成功运行,但使用数组显示错误
- SDL 映像:无法打开映像,仅显示错误消息
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 与clang++一起使用的VS代码在构建良好的C++文件中显示错误
- 编译器没有显示错误,但我没有得到任何输出.怎么了?
- PPM 颜色显示错误
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- is_permutation方法从 #include<algorithm> 显示错误的输出
- 为什么使用与父级声明的 std::function 在与子级一起使用时会显示错误?
- 我的代码厨师提交显示错误的结果
- 显示错误"std_lib_facilities.h"
- 为什么C++显示错误的数字?
- Android (ART) 崩溃并显示错误 JNI 在应用程序中检测到错误:jstring 是无效的本地引用
- 这是我的 .h 文件的一些错误,当我在其中包含我的类模板时,它显示 [错误] 未终止 #ifndef
- c++ IF 语句执行,但添加 ELSE 会显示错误
- 内核.cpp在制作 kernel.o 时显示错误和 Makefile 错误
- C++代码编译,但在 Zorin OS 上运行时显示错误