Я пытаюсь создать матрицу с динамическими пропорциями и инициализировать его вот код, я использую для выделения памяти и инициализации:странно таНос поведение в C
int **matrix;
//mem allocation
matrix=(int*)malloc(sizeof(int*)*mat_w);
for (i=0;i<mat_w;i++)
matrix[i]=(int)malloc(sizeof(int)*mat_h);
//init
for (i=0;i<mat_w;i++)
for (j=0;j<mat_h;j++)
matrix[i][j]=0;
Это прекрасно работает, вопрос в том, , если я попытаюсь создать матрицу типа short - я получаю ошибку сегментации на первом проходе init.
Является ли это проблемой на языке C, или я делаю что-то неправильно?
Код для матрицы типа short
:
short **matrix;
//mem allocation
matrix=(short*)malloc(sizeof(short*)*mat_w);
for (i=0;i<mat_w;i++)
matrix[i]=(short)malloc(sizeof(short)*mat_h);
//init
for (i=0;i<mat_w;i++)
for (j=0;j<mat_h;j++)
matrix[i][j]=0;
P.S .: Я уронил проверки безопасности, индексные переменные и граничные декларации для ясности кода.
Спасибо,
Alex
Вы действительно кастинг возвращаемое значение из 'malloc' для целочисленных типов (а не указатели) в вашем коде? Кроме того, код отступа с 4 пробелами, чтобы отформатировать его как код. – outis
Вам не нужна матрица = (int *) или = (короткая *)? – Locksfree
А, я вижу, что случилось. Форматировщик употреблял лишние * символы. – outis