ВУЗ:
Составители:
Рубрика:
43
Совершенно безопасно применять операцию к указателю NULL.
Результат же повторного применения операции delete к одному и тому
же указателю не определен. Обычно происходит ошибка, приводящая к
зацикливанию.
Чтобы избежать подобных ошибок, можно применять следующую
конструкцию:
int *ip=new int[500];
. . .
if (ip){delete ip; ip=NULL;}
else { cout <<“ память уже освобождена \n”; }
Пример:
Распределить память для матрицы из m строк и n столбцов:
int m, n;
cout<<”Задайте число строк и столбцов матрицы: \n”;
cin>>m>>n;
double **a = new double *[m]; // массив из m указателей на double
for (int i = 0; i<m; i++ )
if ((a[i] = new double[n])==NULL) // Распределяется строка матри-
цы
{ cout<<”Нет памяти!\n”; exit(1);}
Теперь к элементам этой матрицы можно обращаться обычным
образом:
a[i][j] или *(a[i] + j) или *(*(a + i) + j)
Изобразить распределение памяти, соответствующее вышеприве-
денному фрагменту, можно следующим образом:
Страницы
- « первая
- ‹ предыдущая
- …
- 39
- 40
- 41
- 42
- 43
- …
- следующая ›
- последняя »