Мне не повезло с динамическими указателями, когда я хочу его закрыть. почему приложение записано в память после завершения кучи буфера? как я могу закрыть свой массив?Указатель на указатель динамического массива в C++
int main()
{
.
.
int **W;
W = new int* [n];
for (int i=1; i <= n; i++)
W[i] = new int[n];
.
.
.
ast(n,W);
for(int i = 1; i <=n ; i++)
{
delete W[i];
}
delete W;
getch();
}
void ast (int n,int **W)
{
int **D;
D = new int* [n];
for (int i=0; i < n; i++)
D[i] = new int[n];
D=W;
for (int k=1;k<=n;k++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
D[i][j]=min(D[i][j],D[i][k]+D[k][j]);
.
.
for(int i = 1; i <=n ; i++)
{
delete D[i];
}
delete D;
}
W являются от 0 до п-1 вместо 1 п. –
Можете ли вы объяснить больше? – amIllusionist
Вы должны переходить от 0 до n-1 вместо 1 в n. Еще лучше, используйте std :: vector. –