为指针赋值是否会破坏分配的内存?

SAA*_*AAD 0 c++ pointers memory-management

我的问题对某些人来说似乎微不足道,但我不明白为什么这段代码:

double * a = new double [3];
a[0] = 1;
a[1] = 2;
a[2] = 3;

a = 0;

for(int i=0; i<3;i++)
cout << " a[" << i << "] = " << a[i] << endl;

delete [] a ; 
Run Code Online (Sandbox Code Playgroud)

没有给出以下结果:

a[0] = 0;
a[1] = 0;
a[2] = 0;
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 7

分配的原始内存new[]被泄露.你现在有相当于

double * a = 0; //or NULL
Run Code Online (Sandbox Code Playgroud)

内存泄漏.访问空指针将为您提供未定义的行为.不,分配0指针不会破坏内存.