割り当てのために、入力された行列を乗算する必要があります。行列を保持するために、私は2D arrays
を使用しています。ユーザが入力したsizes
です。私は(テスト値はそう大きくはない)の値に使用さmemory
の量を制限するためにshort
を使用しようとしている、動的2D配列使用時のC++セグメンテーションフォールト(コアダンプ)
注:私はサイズを初期化し、次のようにarray
を作成します。 source
ファイルで
constructor
(デフォルトコンストラクタがありません
parameters
と
rows/cols
1
に初期化されている以外は同一に見えます)。
ヘッダーファイル:
short int** value_array;
ソースファイル:初期化function
で
Matrix::Matrix(unsigned int x, unsigned int y)
{
rows = x;
cols = y;
value_array = NULL;
value_array = new short int*[rows];
for (unsigned int i = 0; i < cols; i++)
value_array[i] = new short int[cols];
}
:
void Matrix::init(unsigned int x, unsigned int y, short int value)
{
value_array[x][y] = value;
return;
}
destructor
は次のようになります。
main.cpp
ファイルでは、ポインタ関連のcode
のみがfunctions
を呼び出しています。 value_array
はprivate-variable
です。
core dump
が起こるのいずれか(それは小さなだ場合)matrix
は、乗算後の生成物を含むmatrix
が、私はそれが作成コードのどこかだと思うにつながる、作成されたときに初期化したりしているとき。
私はg++
compiler
と端末でこれを実行して、Ubuntu 16.04
を使用しています。
投稿する[MCVE]してください。デバッガを使用してプログラムをステップ実行し、エラーの原因を絞り込みます。 –
BTW 'delete value_array [i];'は 'delete [] value_array [i];'とされ、指定したコードはあなたが求めている質問に対して完全ではありません。 –
なぜ、コンテナを使用しないのですか?C++は '**'ものの代わりにあなたを提供していますか? – 4386427