我創建使用下面的代碼雙打的數組:如何在指針迭代後通過指針正確刪除雙精度數組?
double *points = new double[(ii+1)*(jj+1)*(kk+1)*3];
我認識到,爲了刪除的磁盤陣列,所有我需要做的就是:
delete[] points;
然而,該陣列在如下通過第一元件的地址的功能(稱爲create_points)創建的:
return &points[0];
穿過地址調用該函數然後迭代的代碼:
double *address = create_points(x_dim,y_dim,z_dim);
for(int k=0; k<x_dim+1; ++k)
for(int j=0; j<y_dim+1; ++j)
for(int i=0; i<z_dim+1; ++i) {
v[p_count].x = *address;
++address;
v[p_count].y = *address;
++address;
v[p_count].z = *address;
++address;
++p_count;
}
現在我問題是,如何正確刪除用於訪問地址的雙精度數組?我可以簡單地去delete[] address
,還是我必須以其他方式做到這一點?
好吧,這是有道理的。謝謝! –
或者根本不返回指針,但返回某種形式的智能指針,以確保它被刪除? –