其中 ( 新 int*) 指向

Where ( new int*) points to

本文关键字:指向 int 其中      更新时间:2023-10-16

我在vs2012中做了一些测试,代码如下:

在调试模式下:

int *b; int *a = b;   //  Crash!!
int *b = *(new int*); int *a = b;  //this is ok

我很好奇为什么会这样。默认情况下,(新 int*) 是否指向一些真实内存?由于它是在非调试模式下运行的,所以我想知道是否可以编写这样的代码

我很好奇为什么会这样。

由于使用了未初始化对象的值,两者都具有未定义的行为。虽然这应该崩溃令人惊讶,但没有理由假设它不会以某种不可预测的方式出错。

取消引用未初始化的指针(例如 int a = *b;而不是int *a = b; ),更有可能导致崩溃。你确定你没有这样做吗?

默认情况下,(新 int*) 是否指向一些真实内存?

new int*返回的int**确实如此。它指向的int*未初始化。

如果可以编写这样的代码

编写具有未定义行为的代码永远是不行的。即使它看起来"有效",它也会在你最意想不到的时候回来咬你。