私はクラスでいくつかのいたずらなことをやろうとしていて、解決できないクラッシュを受けました。私は、データが割り当てられ、充足されるべきだとは思っていますが、割り当てられていないデータを読み込もうとしたことが原因であると私は信じています。助けて..?関数スコープクラッシュのポインタ
void read(int &n, int &m, double ** arr){
fstream f1;
f1.open("1.txt"); //open a file to read the data from it
f1>>n>>m;
arr = new double *[n];//create an array of pointers (double)
for(int e = 0; e<n; e++){
arr[e] = new double[m]; //assign arrays of doubles to each pointer in the array
for(int l = 0; l < m; l++){
arr[e][l]= 0.f; //set it to 0
}
}
for(int e = 0; e<n; e++){
for(int s = 0; s<m; s++){
f1>>arr[e][s]; //read it from file
}
}
f1.close();
cout<<arr[3][4]<<"\n"; //prints out fine (the last number in my test matrix)
}
int main(){
double ** matrix;
read(n, m, matrix); //fills the matrix
cout<<matrix[0][0]; //crashes the program
return 0;
}
また、 'matrix'はRAMの物理アドレスではありませんか?私はそれを作ることができますので、何かを返す必要はありませんか?*私は私の答えを編集し、私は**メモリリークについての詳細情報を追加しませんでした「ボンネットの下に」もの – user2468893
これは原始的なものである場合、私は申し訳ありませんが、私は、ボンネットの下で起こっていただきました!知ってほしいです*と 'matrix'の正しい削除。メモリリークを避けるために、 'new'によって割り当てられたメモリを常に'削除 'するのがよい方法です。 – Awais
についてのいくつかの詳細を追加してみましょうここで – Awais