无法访问数组中声明的内存位置

Tan*_*gar -3 c++ visual-c++

这是我的代码;

#include <iostream>
using namespace std;
int main()
{
    int *D = new int[20000];
    D = { 0 };
    cout << D[0];    
}
Run Code Online (Sandbox Code Playgroud)

cout语句中,无论数组的大小如何,我都会收到访问冲突错误.为什么?

vso*_*tco 5

因为

D = {0};
Run Code Online (Sandbox Code Playgroud)

设置指向D值的指针0,即nullptr.然后尝试去引用

cout << D[0];
Run Code Online (Sandbox Code Playgroud)

空指针是UB(未定义的行为).

如果您想将数组的第一个元素设置为零,则需要执行此操作

D[0] = 0;
Run Code Online (Sandbox Code Playgroud)