C言語の勉強は約1年ほどで、数値計算に用いる内容のみ学習しています。ライブラリは特に使用していません。初投稿のため情報不足などあるかと思いますがご指摘くだされば不足情報も迅速に提出しようかと思います。/*************************************************/以下エラーメッセージです。読み取り中にアクセス違反が発生しました。/**********************************************************************/以下エラー発生時のVisualStdioの出力ログです。シンボルが読み込まれました。シンボルが読み込まれました。シンボルが読み込まれました。シンボルが読み込まれました。シンボルが読み込まれました。シンボルが読み込まれました。読み取り中にアクセス違反が発生しました。読み取り中にアクセス違反が発生しました。/**********************************************************************/以下ソースコードの該当・関係する箇所のみ抜き出したものです。endl;}/*********************************************************************************ここは別口に作成しておいたdatファイルから値を読み込んでいます。39というものを読み込んでNNelem[][]に格納しています。4年前えーとまず言えることは、C/C++言語の配列の添え字は0から始まるのは分かっていますか?たとえば、5個の配列を考えると以下のような感じになるはずです。4年前へにっくすさんの指摘するとおり、確保された領域の外にアクセスしている場所が複数あります。他には・InitialSet1関数でメモリリークを起こしています。kbuf[4]={};とするか、使用していないならば削除するべきだと思います。以下は提示された部分以外で適切に代入しているかを確認してください。・217行目で使用しているNrest,NrestPに有効な領域へのポインタを代入している部分が見つかりません。・218行目で使用しているTempFix,TempFixPに有効な領域へのポインタを代入している部分が見つかりません。・225行目で使用しているTu,TempInitに有効な領域へのポインタを代入している部分が見つかりません。・252,255行目で使用しているKnumPRに有効な領域へのポインタを代入している部分が見つかりません。・228,229行目で使用しているPosGausに有効な領域へのポインタを代入している部分が見つかりません。・230,231行目で使用しているWeightGに有効な領域へのポインタを代入している部分が見つかりません。(inclusive)の添字を使うことも可能です。コメントありがとうございます。「C/C++言語の配列の添え字は0から始まる」ということは知識としては聞いたことがあるので知ってはいます。Basicでかかれたもの)をベタ打ちに近い形で書いているためfor文もfor(i=0;i<5;i++)ではなくfor(i=1;i<=5;i++)としている、という状況です。鳴れた方からすると、気持ち悪い書き方かもしれません。最終的にはそのようにコード全体を変更しなければいけないのだろうな、と感じてはいます。えーとまず言えることは、C/C++言語の配列の添え字は0から始まるのは分かっていますか?たとえば、5個の配列を考えると以下のような感じになるはずです。コメントありがとうございます。元のソースコードが長く、削って一部を載せたつもりだったのですが、どうやら削りすぎてしまったようです。>>・InitialSet1関数でメモリリークを起こしています。kbuf[4]={};とするか、使用していないならば削除するべきだと思います。ご指摘ありがとうございます。kbufはInitialSet1関数内では使用していませんでした。削除したいと思います。>>以下は提示された部分以外で適切に代入しているかを確認してください。・217行目で使用しているNrest,NrestPに有効な領域へのポインタを代入している部分が見つかりません。・218行目で使用しているTempFix,TempFixPに有効な領域へのポインタを代入している部分が見つかりません。・225行目で使用しているTu,TempInitに有効な領域へのポインタを代入している部分が見つかりません。・252,255行目で使用しているKnumPRに有効な領域へのポインタを代入している部分が見つかりません。・228,229行目で使用しているPosGausに有効な領域へのポインタを代入している部分が見つかりません。・230,231行目で使用しているWeightGに有効な領域へのポインタを代入している部分が見つかりません。情報不足ですみません。元のソースコードから削ってしまった部分にてnewを用いて配列の動的確保+初期化はしてありました。一部のみソースコードを載せるという判断ミスのためにご迷惑をおかけして申し訳ありません。ソースコードを全文載せることにします。初めからすべきでした・・・//以下ソースコードです。Ydata[i];}fin.close();//今回の場合は物質が1種類だけなので、アセンブリとかがないため局所的な節点番号と全体での節点番号は同じと見なせる。NumMat[i];}fin6.close();//温度上限は200°Cにしておく。ie){/***************************************************************************************************************要素マトリックス計算のプログラムie要素番号xe[ii],ye[ii]要素の4節点のX,Y座標NNelem[ie][ii]要素の4節点の節点番号KnumPR[ib]各節点番号対応の節点順位te[],tu[]温度nvar要素の変数個数ek[i][j]熱伝導マトリックス{Ke}em[i][j]熱容量マトリックス{Ce}mstat区分変数。"2次元の解析ではありません。Gradientnumeff保存された変数の合計個数tk[k]左下三角配列の1次元保存配列krowpos[i]第i行の最初の保存変数に対するtk[]でのインデックス番号。したがって、第i行の対角要素インデックスはkrowpos[i+1]-1で得られる。最終をn行としてkrowpos[n+1]にその次のインデックス番号を与えておく。"計算結果をファイルへ出力しました。コメントありがとうございます。「C/C++言語の配列の添え字は0から始まる」ということは知識としては聞いたことがあるので知ってはいます。Basicでかかれたもの)をベタ打ちに近い形で書いているためfor文もfor(i=0;i<5;i++)ではなくfor(i=1;i<=5;i++)としている、という状況です。鳴れた方からすると、気持ち悪い書き方かもしれません。最終的にはそのようにコード全体を変更しなければいけないのだろうな、と感じてはいます。書き方うんぬんではなく、やってはいけないことだから、C/C++言語の基本を分かってるかと聞いたのですが。何を勘違いしてるんですか?全然分かってないですね。a[5];と宣言したら、使用できるのは、a[0]~a[4]であって、a[1]~a[5]ではありません(だからfor文も自然とfor(i=0;i<5;i++)という形になります)。a[5]にアクセスしたら範囲外です。あなたが最初の投稿で記述したアクセス違反の原因を指摘してるのに、スルーしてどうするんですか。最終的にはそのようにコード全体を変更しなければいけないのだろうな、と感じてはいます。アドバイスはしました。コード全体ではなく、配列を確保する部分のみ書き換えればいいかもしれません。わかりにくくなかったら1~Nの添字が使えないなんていうことはありません。(inclusive)の添字を使うことも可能です。4年前もしくは、1-originでアクセスできる「配列」クラスを作るという方法もあります...が、素直にnewで確保する要素数を増やす方がいいでしょう。ミクプラは自由にリンクできます。