User manual - アプリケーション作成上の注意点ver.1.00(2008年5月26日)

9
1-7.スタックオーバーフロー
【内容】
ローカル変数を大量に確保したり、引数を大量に用いて、アプリケーションで使用可能なス
タック領域(2KB)を超えてしまう。
【例】
usr_func(UB *str,struct K_DEF *k_def,int len)
{
unsigned char s_buf[1024],r_buf[1024];
}
(上記の場合、ローカル変数で2048バイト、引数で12バイトのため、2KBを超えて
【対策】
・変数を static 型やグローバルで確保し、スタックを使わないようにする。
・関数の引数を極力少なくする(構造体にまとめてしまう、自身の戻り値を用
する、等)
☆なお、コンパイル時にリストファイル(-lオプションにて作成される)を
作成する事で、各関数が使用するスタックサイズが確認できます。
(ソフトウェア解説書の「4.1 スタック領域について」参照)
【対策例】
unsigned char s_buf[1024],r_buf[1024];
usr_func(UB *str,struct K_DEF *k_def,int len)
{
}