
No.5ベストアンサー
- 回答日時:
「かなり省略」の部分が重要だと思います。
スタックフレームを破壊している可能性があります。
main, a, bのいずれかの関数でローカルな配列を使っているなら、ためしに配列のサイズを必要量の何倍かに拡大してみてください。これによって症状がなくなるか緩和されるのであれば、配列の上限を超えて書き換えているということになります。
場合によってはprintfの後で落ちているという可能性もあります。なぜなら、printfは、改行が与えられない限り短い文字列はバッファに溜まるだけで、直後でSEGVした場合は画面に反映されないためです。
コメントアウトしたら大丈夫だからprintfのせいだとは限りません。その有無によってスタックフレームの構成が最適化されて、たまたま落ちないだけかもしれません。
No.4
- 回答日時:
main() {
int i = 1;
printf("%d", i);
}
でさえだめということでしょうか?
改行を入れたら(つまり"%d\n")、症状は変わりますか?
分割コンパイルというのは、何をされているのでしょうか?printfは正常で他で落ちているという可能性はありませんか?
この回答への補足
main関数があるファイルではOKです。
現在の状況は、
main.c--------------
main(){
a();
}
a.c------------------
void a(){
b();
}
b.c-------------------
void b(){
int i=1;
printf("%d",i);
}
ってな感じです(かなり省略)。ファイル3つでb.c以外ではprintfは正常です。
ところが、b.cでのprintfはSegmentation faultになります。全部インクルードファイルはちゃんとやっています。
No.3
- 回答日時:
Segmentation fault が printf で発生していると考える根拠は何でしょう。
プログラムの変更箇所がそこだけであっても、それが他の箇所に影響している
ことはよくあります。
printf で間違いないということなら、ライブラリのバグとしか思えませんが。
No.1
- 回答日時:
変数「i」は、何型ですか?多分intかshortかlong型
(多分intかな?)と思います。
このソースの全体が見えていないので、特定はできませんが、このprintf関数にくるまでに、変数iのポイ
ンタを破壊している可能性があります。変数iを宣言
したところでその前の行で宣言した変数をポインタで
処理していませんか?
int j; ←この変数を間違った操作?
int i; ←今回の症状
/* 極端なサンプルです */
memcpy( &j , "ABCDE" , 5 );
てな感じです。
あくまでも一例なので、原因は他にも考えられます。
該当する行までの処理で、ポインタもしくは配列操作
で破壊していなかのチェックをお勧めします。
この回答への補足
int i=1;
printf("%d",i);
もだめです。
だからそこまでで破壊してることはないかと…
回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトがすぐ消える
-
unsigned int型について
-
テキストカーソル位置の取得
-
C言語です このプログラミング...
-
c言語でAからZまでを表示する...
-
(C言語)めちゃくちゃな値にな...
-
万年カレンダーのC言語プログラ...
-
配列データをExcelファイルとし...
-
printfの有無で値が変化する
-
C言語で多項式の割り算のプログ...
-
C言語
-
コンパイルエラーについて
-
c言語による2のべき乗
-
error C2143: 構文エラー : ';'...
-
3つの入力した数値の大小比較...
-
C++ 二次関数の重解、虚数解が...
-
switch分のケースを範囲数?に...
-
4の倍数を論理演算で表す。。
-
三角形の判別
-
c言語で2000年以降カレンダーを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語でAからZまでを表示する...
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
コンパイルエラーについて
-
コマンドプロンプトがすぐ消える
-
勝率をプログラムに
-
テキストカーソル位置の取得
-
三角形の判別
-
【C言語教えてください】sin波...
-
4の倍数を論理演算で表す。。
-
C言語で、「自然数nを入力し、n...
-
入力したお金の金額からお札の...
-
cshの文字列操作(0埋め)
-
switch分のケースを範囲数?に...
-
scanfに文字が入力されたときに...
-
unsigned int型について
-
プログラミングについての質問です
-
ダブルポインタで2次元配列を作成
-
円の面積を求めるプログラミン...
おすすめ情報