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)
分配的原始内存new[]被泄露.你现在有相当于
double * a = 0; //or NULL
Run Code Online (Sandbox Code Playgroud)
内存泄漏.访问空指针将为您提供未定义的行为.不,分配0指针不会破坏内存.