こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

バッファオーバーフローについて

プログラムを書き換えてないでmakeし実行すると バッファオーバーフローになったりならなかったりします。

なぜでしょうか? 大きなプログラムは書いていません。

OS:windows7
visual studio2005

投稿日時 - 2013-07-29 11:57:39

QNo.8196748

すぐに回答ほしいです

質問者が選んだベストアンサー

そのバッファオーバーランの有無はどうやって調べたのでしょうか?
単に、エラーが発生するかどうか、で判断しているのなら
・バッファオーバーランが発生してエラーになる
・バッファオーバーランが発生したけど、たまたまエラーにはならなかった
の両方とも起り得るので、「エラーで止まらない」≠「バッファオーバーランが無い」です。

他に、
int i, a[10],b ;
b=a[i];
等と、変数を初期化していないまま参照したとき、iの状態によってバッファオーバーランになったりならなかったりします。

投稿日時 - 2013-07-29 12:30:40

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

Wr5

ポインタや配列の添え字の扱いを間違っている箇所があるのでしょう。
大きいプログラムかどうかなんてのは関係ありません。
下記のコードだけでバッファオーバーランできますし。
# a[10]にアクセスしてる。

int main()
{
 int a[10],i;

 for(i = 1;i <= 10; i++)
 {
  a[i] = i;
 }

 return 0;
}


条件によって正しい範囲内だけの使用で済んでいれば、「なったりならなかったり」という事にもなるやも知れません。

具体的なコードも掲示されていないようですから、自力で探して下さい。

投稿日時 - 2013-07-29 12:15:03

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-