Index: /BasicCompiler_Common/Class.cpp
===================================================================
--- /BasicCompiler_Common/Class.cpp	(revision 52)
+++ /BasicCompiler_Common/Class.cpp	(revision 53)
@@ -125,25 +125,24 @@
 		pobj_c=pobj_DBClass->Iterator_GetNext();
 
-		int i;
-		char temporary[VN_SIZE];
-		for(i=0;i<pobj_c->iStaticMemberNum;i++){
-			sprintf(temporary,"%s.%s",pobj_c->name,pobj_c->ppobj_StaticMember[i]->name);
+		foreach( CMember *member, pobj_c->staticMembers ){
+			char temporary[VN_SIZE];
+			sprintf(temporary,"%s.%s",pobj_c->name,member->name);
 			AddGlobalVariable(
 				temporary,
-				pobj_c->ppobj_StaticMember[i]->SubScripts,
-				&pobj_c->ppobj_StaticMember[i]->TypeInfo,
-				GetTypeSize(pobj_c->ppobj_StaticMember[i]->TypeInfo.type,pobj_c->ppobj_StaticMember[i]->TypeInfo.u.lpIndex),
-				pobj_c->ppobj_StaticMember[i]->InitBuf,
-				pobj_c->ppobj_StaticMember[i]->ConstractParameter,
+				member->SubScripts,
+				&member->TypeInfo,
+				GetTypeSize(member->TypeInfo.type,member->TypeInfo.u.lpIndex),
+				member->InitBuf,
+				member->ConstractParameter,
 				0);
 
-			if(pobj_c->ppobj_StaticMember[i]->TypeInfo.type==DEF_OBJECT){
+			if(member->TypeInfo.type==DEF_OBJECT){
 				//エラー用
-				cp=pobj_c->ppobj_StaticMember[i]->source_code_address;
+				cp=member->source_code_address;
 
 				CallConstructor(temporary,
-					pobj_c->ppobj_StaticMember[i]->SubScripts,
-					pobj_c->ppobj_StaticMember[i]->TypeInfo,
-					pobj_c->ppobj_StaticMember[i]->ConstractParameter);
+					member->SubScripts,
+					member->TypeInfo,
+					member->ConstractParameter);
 			}
 
@@ -207,11 +206,7 @@
 	}
 
-	if(ppobj_StaticMember){
-		//静的メンバ
-		for(i=0;i<iStaticMemberNum;i++){
-			delete ppobj_StaticMember[i];
-		}
-		HeapDefaultFree(ppobj_StaticMember);
-		ppobj_StaticMember=0;
+	//静的メンバ
+	foreach( CMember *member, staticMembers ){
+		delete member;
 	}
 
@@ -277,7 +272,6 @@
 }
 void CClass::AddStaticMember( DWORD dwAccess, bool isConst, bool isRef, char *buffer, int NowLine ){
-	ppobj_StaticMember=(CMember **)HeapReAlloc(hHeap,0,ppobj_StaticMember,(iStaticMemberNum+1)*sizeof(CMember *));
-	ppobj_StaticMember[iStaticMemberNum]=new CMember( this, dwAccess, isConst, isRef, buffer, NowLine );
-	iStaticMemberNum++;
+	CMember *member = new CMember( this, dwAccess, isConst, isRef, buffer, NowLine );
+	staticMembers.push_back( member );
 }
 void CClass::AddMethod( SUBINFO *psi,DWORD dwAccess, bool isConst, BOOL bAbstract, BOOL bVirtual ){
@@ -320,8 +314,6 @@
 	//重複チェック
 
-	int i;
-
 	//メンバ
-	for(i=0;i<iMemberNum;i++){
+	for( int i=0;i<iMemberNum;i++){
 		if(lstrcmp(name,ppobj_Member[i]->name)==0){
 			return 1;
@@ -330,6 +322,6 @@
 
 	//静的メンバ
-	for(i=0;i<iStaticMemberNum;i++){
-		if(lstrcmp(name,ppobj_StaticMember[i]->name)==0){
+	foreach( CMember *member, staticMembers ){
+		if( lstrcmp( name, member->name ) == 0 ){
 			return 1;
 		}
@@ -911,6 +903,4 @@
 			pobj_c->ppobj_Member=(CMember **)HeapAlloc(hHeap,0,1);
 			pobj_c->iMemberNum=0;
-			pobj_c->ppobj_StaticMember=(CMember **)HeapAlloc(hHeap,0,1);
-			pobj_c->iStaticMemberNum=0;
 
 			pobj_c->ConstructorMemberSubIndex=-1;
@@ -1069,6 +1059,4 @@
 			pobj_c->ppobj_Member=(CMember **)HeapAlloc(hHeap,0,1);
 			pobj_c->iMemberNum=0;
-			pobj_c->ppobj_StaticMember=(CMember **)HeapAlloc(hHeap,0,1);
-			pobj_c->iStaticMemberNum=0;
 
 			pobj_c->ConstructorMemberSubIndex=-1;
Index: /BasicCompiler_Common/Class.h
===================================================================
--- /BasicCompiler_Common/Class.h	(revision 52)
+++ /BasicCompiler_Common/Class.h	(revision 53)
@@ -63,6 +63,10 @@
 class CDebugSection;
 class CClass{
+	friend CMember;
 	friend CDBClass;
 	friend CDebugSection;
+
+	//静的メンバ情報
+	std::vector<CMember *>staticMembers;
 
 	//メソッド情報
@@ -86,8 +90,4 @@
 	int iMemberNum;
 
-	//静的メンバ情報
-	CMember **ppobj_StaticMember;
-	int iStaticMemberNum;
-
 	//仮想関数の数
 	int vtbl_num;
@@ -104,4 +104,5 @@
 	void Inherits( CClass *pInheritsClass );
 
+	//メンバ、メソッドの追加
 	void AddMember( DWORD dwAccess, bool idConst, bool isRef, char *buffer );
 	void AddStaticMember( DWORD dwAccess, bool isConst, bool isRef, char *buffer, int NowLine );
@@ -109,4 +110,5 @@
 	void AddStaticMethod(SUBINFO *psi,DWORD dwAccess);
 
+	//重複チェック
 	BOOL DupliCheckAll(const char *name);
 	BOOL DupliCheckMember(const char *name);
Index: /BasicCompiler_Common/DebugMiddleFile.cpp
===================================================================
--- /BasicCompiler_Common/DebugMiddleFile.cpp	(revision 52)
+++ /BasicCompiler_Common/DebugMiddleFile.cpp	(revision 53)
@@ -382,21 +382,21 @@
 
 		//静的メンバ
-		*(long *)(buffer+i2)=pobj_c->iStaticMemberNum;
-		i2+=sizeof(long);
-		for(i4=0;i4<pobj_c->iStaticMemberNum;i4++){
-			lstrcpy(buffer+i2,pobj_c->ppobj_StaticMember[i4]->name);
+		*(long *)(buffer+i2)=(long)pobj_c->staticMembers.size();
+		i2+=sizeof(long);
+		foreach( CMember *member, pobj_c->staticMembers ){
+			lstrcpy(buffer+i2,member->name);
 			i2+=lstrlen(buffer+i2)+1;
 
-			memcpy(buffer+i2,pobj_c->ppobj_StaticMember[i4]->SubScripts,sizeof(int)*MAX_ARRAYDIM);
+			memcpy(buffer+i2,member->SubScripts,sizeof(int)*MAX_ARRAYDIM);
 			i2+=sizeof(int)*MAX_ARRAYDIM;
 
 			//型
-			*(long *)(buffer+i2)=pobj_c->ppobj_StaticMember[i4]->TypeInfo.type;
+			*(long *)(buffer+i2)=member->TypeInfo.type;
 			i2+=sizeof(long);
 
 			//型の拡張情報
-			SetLpIndex_DebugFile(buffer,&i2,pobj_c->ppobj_StaticMember[i4]->TypeInfo.type,pobj_c->ppobj_StaticMember[i4]->TypeInfo.u.lpIndex);
-
-			*(long *)(buffer+i2)=pobj_c->ppobj_StaticMember[i4]->dwAccess;
+			SetLpIndex_DebugFile(buffer,&i2,member->TypeInfo.type,member->TypeInfo.u.lpIndex);
+
+			*(long *)(buffer+i2)=member->dwAccess;
 			i2+=sizeof(long);
 
@@ -772,27 +772,27 @@
 
 		//静的メンバ
-		pobj_c->iStaticMemberNum=*(long *)(buffer+i2);
-		i2+=sizeof(long);
-		pobj_c->ppobj_StaticMember=
-			(CMember **)HeapAlloc(hHeap,0,pobj_c->iStaticMemberNum*sizeof(CMember *));
-		for(i4=0;i4<pobj_c->iStaticMemberNum;i4++){
-			pobj_c->ppobj_StaticMember[i4]=new CMember();
-
-			pobj_c->ppobj_StaticMember[i4]->name=(char *)HeapAlloc(hHeap,0,lstrlen(buffer+i2)+1);
-			lstrcpy(pobj_c->ppobj_StaticMember[i4]->name,buffer+i2);
+		int nStaticMember = *(long *)(buffer+i2);
+		i2+=sizeof(long);
+		for( i4=0; i4<nStaticMember; i4++ ){
+			CMember *member=new CMember();
+
+			member->name=(char *)HeapAlloc(hHeap,0,lstrlen(buffer+i2)+1);
+			lstrcpy(member->name,buffer+i2);
 			i2+=lstrlen(buffer+i2)+1;
 
-			memcpy(pobj_c->ppobj_StaticMember[i4]->SubScripts,buffer+i2,sizeof(int)*MAX_ARRAYDIM);
+			memcpy(member->SubScripts,buffer+i2,sizeof(int)*MAX_ARRAYDIM);
 			i2+=sizeof(int)*MAX_ARRAYDIM;
 
 			//型
-			pobj_c->ppobj_StaticMember[i4]->TypeInfo.type=*(long *)(buffer+i2);
+			member->TypeInfo.type=*(long *)(buffer+i2);
 			i2+=sizeof(long);
 
 			//型の拡張情報
-			GetLpIndex_DebugFile(buffer,&i2,pobj_c->ppobj_StaticMember[i4]->TypeInfo.type,&pobj_c->ppobj_StaticMember[i4]->TypeInfo.u.lpIndex);
-
-			pobj_c->ppobj_StaticMember[i4]->dwAccess=*(long *)(buffer+i2);
-			i2+=sizeof(long);
+			GetLpIndex_DebugFile(buffer,&i2,member->TypeInfo.type,&member->TypeInfo.u.lpIndex);
+
+			member->dwAccess=*(long *)(buffer+i2);
+			i2+=sizeof(long);
+
+			pobj_c->staticMembers.push_back( member );
 		}
 	}
