現在c言語でプログラミングをしているのですが、動的に領域確保した三次元配列に値”0”を入れようとすると、bus error が発生してしまいます。使用しているのはMac OS X 10.5.8 powerPC G5です。
ソースは以下のようになっています
for(i=0;i<M*J;i++){
for(j=0;j<N;j++){
for(k=0;k<Q;k++){
BETA[i][j][k]=0.0;
ALPHA[i][j][k]=0.0;
}
}
}
このとき、M、J、N、Qはそれぞれint型の定数です。
gdbしてみると結果はこのようになります。
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00004208 in sum_product_decode (H=0x1001f0, y=0x100880, transH=0x1002c0, get=0x100760, get_ve=0x100790, snr=6, count=0, matrix=0xbffff140, vector=0xbffff020, synd=0xbffff130) at n_b_LDPC.c:626
626 BETA[i][j][k]=0.0;
ご指摘よろしくお願いします。
No.5ベストアンサー
- 回答日時:
>"double"だとおもいます。
ですよね。
この考え方を拡張すると、
double ***BETA;
と定義したBETAが指すのは、double ** 型ですので、
BETA = (double ***) malloc(sizeof(double **) * M * J);
であることに気づきますか?
つまり、動的確保を行なう際に、
(double ○○) malloc(sizeof(double △△) * 領域確保したい大きさ);
と書いたとき、
○○ に書く * の数が △△ に書く * の数より1個多い、
という関係があることに気づきますか?
このやり方で書き直したところ、正常に動きました!
判りやすくステップを踏んで教えていただき、大変わかりやすかったです。
ありがとうございました。
No.3
- 回答日時:
> address: 0x00000000
アドレスが明後日の方向にいってるみたいですから、うまく割り当てできてないのでは。
3重にmallocしてないとか。
No.1
- 回答日時:
>動的に領域確保した三次元配列
>ソースは以下のようになっています
そこだけじゃなくって、全体を見せてほしいなぁ、なんて思ったりしています。
この回答への補足
回答ありがとうございます。全体だとあまりにも多く
なってしまうので、関係ありそうなところをかいつまんで
載せさせていただきます。
double ***BETA,***ALPHA;
BETA= (double ***)malloc(sizeof(double *) * M*J);
for(i=0;i<M*J;i++){
BETA[i] = (double **)malloc(sizeof(double *) * N);
for(j=0;j<N;j++){
BETA[i][j] = (double *)malloc(sizeof(double *) * Q);
}
}
ALPHA= (double ***)malloc(sizeof(double *) * M*J);
for(i=0;i<M*J;i++){
ALPHA[i] = (double **)malloc(sizeof(double *) * N);
for(j=0;j<N;j++){
ALPHA[i][j] = (double *)malloc(sizeof(double *) * Q);
}
}
for(i=0;i<M*J;i++){
for(j=0;j<N;j++){
for(k=0;k<Q;k++){
BETA[i][j][k]=0.0;
ALPHA[i][j][k]=0.0;
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- 数学 線形代数の対称行列についての問題がわからないです。 2 2023/01/08 14:59
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- 数学 通過領域に関する記述について 3 2023/05/01 22:38
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
doubleの変数にintとintの割り...
-
C言語 関数プロトタイプ宣言の...
-
C言語で台形公式を使った二重積...
-
関数におけるif文とreturn文に...
-
C言語(プログラミング)関連の質...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
数値を指数部と仮数部に分離したい
-
マチンの公式による円周率のプ...
-
至急です! マクロ定義で #defi...
-
C# 分秒表示ついて
-
c言語で、繰り返し文の中で、0....
-
C言語でdouble型の小数点の引き...
-
学校の課題で2次方程式のプログ...
-
ニュートン法
-
C言語で表記についの質問です
-
c言語の問題
-
2分法で方程式の複数の解を自...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
至急です! マクロ定義で #defi...
-
c言語で、繰り返し文の中で、0....
-
関数におけるif文とreturn文に...
-
C言語 関数プロトタイプ宣言の...
-
C言語初心者 構造体 課題について
-
C言語の型による処理速度の違い
-
Cで3乗根を求める方法
-
C言語で-23乗を取り扱うには
-
2分法で方程式の複数の解を自...
-
doubleは常に%lfとするべきなのか
-
c言語のコンパイルエラー canno...
-
C言語で直角三角形の斜辺を求め...
-
C言語のプログラムで#include<m...
-
int とdoubleの比較
-
C++で外積
おすすめ情報