[osask 7034] C++でエラー

こんにちは、uchanです。
C++プログラミングをしていて、良く解らない不具合にぶち当たったので、ここに投稿し
ます。

以下のプログラムを、osa_dir2で「make run」コンパイルし、実行させてみたところ、例
外(CS:EIP = 0010:00002415)が発生し、止まります。コンパイラは、cc1.exeから
cc1plus.exeに、com_mak.txtのCC1を、
CC1      = $(TOOLPATH)cc1plus.exe -I$(INCPATH) $(CC1OPT) -Os -Wall -quiet
という風に書き換えることによって変更させて使っています。

なにやら、MyClassクラスのコンストラクタにif文や、for文、do-while文、変数宣言、変
数に値を代入する文などが一定数以上含まれていると、このエラーが発生するようです。
極端な例は、正常に動いていたのに「i = 0;」を書き足すと、このエラーが発生する、な
どです。
コンストラクタだからいけないのかなとも思ったので、void test()と言う関数をMyClass
の中に作って、そこにコンストラクタの処理内容をすべて移し、fs.test();とやってみて
もやはり同じ例外が発生しました。

ちなみに、STACKSIZE  = 512k、MALLOCSIZE = 256kとしています。(十分だと思います)

どこか、誤っているところがあるのでしょうか。もしかしたらコンパイラがいけないので
しょうか。どうかご回答をお願いします。

----------------------------------hellocp3.cpp----------------------------------

#define AUTO_MALLOC 0
extern "C"
{
	#include <guigui00.h>
	void OsaskMain();
};

class MyClass
{
	int i;
public:
	MyClass()
	{
		if (1 == 1) {
			if (0 != 0)
				0;
		}
		if (1 == 1) {
			if (0 != 0)
				0;
		}
		i = 0;
		i = 5;
	}
};

LIB_WINDOW *win;
LIB_TEXTBOX *title;

void OsaskMain()
{
	lib_init(0);

	// ウィンドウオープン
	win = lib_openwindow(AUTO_MALLOC, 0x0200, 8 * 20, 16 * 5);
	title = lib_opentextbox(0x1000, AUTO_MALLOC, 0, 10, 1, 0, 0, win, 0x00c0, 0);
	lib_putstring_ASCII(0x0000, 0, 0, title, 0, 0, "hellocp3");

	MyClass fs;
	lib_waitsignal(0x0001, 0, 0);
}



ML番号でジャンプ
ML単語検索