配列のサイズとsin関数に関して

こんにちは、あおぞらです。

研修で課題を行っています。

初歩的な質問で申し訳ないのですが、

検索などしてもよくわからないので投稿させて頂きいます。

下記のようなmain関数で、

配列に値を代入する事が出来ますが、

sin関数の計算式を代入していくと、途中でExcept_BRKがかかってしまうようです。

配列の上限、または、どのような他の制限がありますでしょうか。

以上よろしくお願いいたします。

#include "iodefine.h"
#include "math.h"

void main(void)
{
  int i;
  double data[360];

  for(i=0;i<360;i++){
    data[i] = i*1.0;  <-実行できる
  }

  for(i=0;i<360;i++){
    data[i] = sin((i/180.0)*3.14);   <-途中で止まる
  }

  while(1){
    ;
  }
}

Parents
  • あおぞら さん、こんにちは。NoMaYです。

    > 宣言時に溢れている場合、コンパイラーでエラーなどのメッセージが出るのか、

    メモリに収まらないというリンクエラーが出ますよ。リンカで検出出来ないのは、スタックとヒープの場合ですね。なお、スタック使用量見積もりツールとしてCall Walkerというツールも用意されているのですが(CS+のメニューから起動可能)、うまく使うのは初学者に限らず難しいかなぁ、というところだったりします、、、

Reply
  • あおぞら さん、こんにちは。NoMaYです。

    > 宣言時に溢れている場合、コンパイラーでエラーなどのメッセージが出るのか、

    メモリに収まらないというリンクエラーが出ますよ。リンカで検出出来ないのは、スタックとヒープの場合ですね。なお、スタック使用量見積もりツールとしてCall Walkerというツールも用意されているのですが(CS+のメニューから起動可能)、うまく使うのは初学者に限らず難しいかなぁ、というところだったりします、、、

Children
  • 投稿ありがとうございます。

    配列のサイズの件で、色々と知る事が出来ました。
    あとは、自分で原因追跡できる様にならなければと思いました。

    以上、よろしくお願いいたします。