Ошибки, связанные с выделением памяти

Самые тяжелые и трудно вылавливаемые ошибки в программах на языке Си связаны

именно с неверным использованием динамических массивов. В таблице перечислены наиболее тяжелые случаи и способы борьбы с ними.__

\ Выделение памяти для матрицы

Для выделения памяти под одномерный массив целых чисел нам потребовался указатель

на целые числа. Для матрицы надо выделить указатель на массив целых чисел, который объявляется как

int **A;

Но лучше всего сразу объявить новый тип данных - указатель на целое число. Новые типы объявляются директивой typedef вне всех процедур и функций (там же, где и глобальные переменные).

typedef int *pInt;

Этой строкой мы сказали компилятору, что любая переменная нового типа pInt представляет собой указатель на целое число или адрес массива целых чисел. К сожалению, место для матрицы не удается так же просто выделить в памяти, как мы делали это для одномерного массива.

Если написать просто

int M = 5, N = 7;

pInt *A;

A = new int[M][N]; // ошибочнаястрока

компилятор выдает множество ошибок. Связано это с тем, что ему требуется заранее знать длину одной строки, чтобы правильно расшифровать запись типа A[i][j]. Ниже рассмотрены три способа решения этой проблемы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: