動的な比率でマトリックスを作成しようとしています。これを初期化するには、メモリの割り当てと初期化に使用しているコードを次に示します。
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;
PS:コードを明確にするために、安全性チェック、インデックス変数、境界宣言を削除しました。
ありがとう、
アレックス