Index: /BasicCompiler32/Compile_Object.cpp
===================================================================
--- /BasicCompiler32/Compile_Object.cpp	(revision 122)
+++ /BasicCompiler32/Compile_Object.cpp	(revision 123)
@@ -134,7 +134,7 @@
 		obp+=sizeof(long);
 
-		//add eax,sizeof(DWORD)*2
+		//add eax,OBJECT_HEAD_SIZE
 		OpBuffer[obp++]=(char)0x05;
-		*((long *)(OpBuffer+obp))=sizeof(DWORD)*3;
+		*((long *)(OpBuffer+obp))=OBJECT_HEAD_SIZE;
 		obp+=sizeof(long);
 
@@ -150,7 +150,7 @@
 		obp+=sizeof(long);
 
-		//push size
+		//push size + OBJECT_HEAD_SIZE
 		OpBuffer[obp++]=(char)0x68;
-		*((long *)(OpBuffer+obp))=typeSize+sizeof(DWORD)*3;
+		*((long *)(OpBuffer+obp))=typeSize + OBJECT_HEAD_SIZE;
 		obp+=sizeof(long);
 	}
@@ -176,8 +176,8 @@
 	/*
 	確保されたヒープ領域のポインタ（callocの戻り値eax）をpPtrとすると、
-	pPtr-=sizeof(DWORD)*3
 	pPtr[0]=オブジェクトの個数
 	pPtr[1]=オブジェクトのサイズ
 	pPtr[2]=デストラクタの関数ポインタ
+	pPtr[3]=reserve
 	*/
 
@@ -198,5 +198,5 @@
 	obp+=sizeof(long);
 
-	//mov dword ptr[eax],ecx
+	//mov dword ptr[eax],ecx（オブジェクトのサイズ）
 	OpBuffer[obp++]=(char)0x89;
 	OpBuffer[obp++]=(char)0x08;
@@ -217,8 +217,15 @@
 	obp+=sizeof(long);
 
-	//mov dword ptr[eax],ecx
+	//mov dword ptr[eax],ecx（デストラクタの関数ポインタ）
 	OpBuffer[obp++]=(char)0x89;
 	OpBuffer[obp++]=(char)0x08;
 
+	//add eax,sizeof(DWORD)
+	OpBuffer[obp++]=(char)0x05;
+	*((long *)(OpBuffer+obp))=sizeof(DWORD);
+	obp+=sizeof(long);
+
+
+	// リザーブ領域
 	//add eax,sizeof(DWORD)
 	OpBuffer[obp++]=(char)0x05;
@@ -251,7 +258,5 @@
 
 	//sub eax,sizeof(DWORD)*3
-	OpBuffer[obp++]=(char)0x83;
-	OpBuffer[obp++]=(char)0xE8;
-	OpBuffer[obp++]=(char)0x0C;
+	op_sub_RV8( REG_EAX, OBJECT_HEAD_SIZE );
 
 	//push eax
@@ -283,4 +288,11 @@
 	OpBuffer[obp++]=(char)0x10;
 
+	//add eax,sizeof(DWORD)
+	OpBuffer[obp++]=(char)0x05;
+	*((long *)(OpBuffer+obp))=sizeof(DWORD);
+	obp+=sizeof(long);
+
+
+	// リザーブ領域
 	//add eax,sizeof(DWORD)
 	OpBuffer[obp++]=(char)0x05;
Index: /BasicCompiler64/Compile_Object.cpp
===================================================================
--- /BasicCompiler64/Compile_Object.cpp	(revision 122)
+++ /BasicCompiler64/Compile_Object.cpp	(revision 123)
@@ -121,6 +121,6 @@
 		op_imul_RV(sizeof(_int64),REG_RAX,typeSize);
 
-		//add rax,PTR_SIZE*3
-		op_add_RV(REG_RAX,PTR_SIZE*3);
+		//add rax,OBJECT_HEAD_SIZE
+		op_add_RV(REG_RAX,OBJECT_HEAD_SIZE);
 
 		//mov rcx,rax
@@ -133,6 +133,6 @@
 		op_mov_RV(sizeof(_int64),REG_RBX,1);
 
-		//mov rcx,typeSize+PTR_SIZE*3
-		op_mov_RV(sizeof(_int64),REG_RCX,typeSize+PTR_SIZE*3);
+		//mov rcx,typeSize+OBJECT_HEAD_SIZE
+		op_mov_RV(sizeof(_int64),REG_RCX,typeSize+OBJECT_HEAD_SIZE);
 	}
 
@@ -157,8 +157,9 @@
 	/*
 	確保されたヒープ領域のポインタ（callocの戻り値eax）をpPtrとすると、
-	pPtr-=sizeof(DWORD)*3
+	pPtr-=OBJECT_HEAD_SIZE ... ( sizeof(DWORD)*4 )
 	pPtr[0]=オブジェクトの個数
 	pPtr[1]=オブジェクトのサイズ
 	pPtr[2]=デストラクタの関数ポインタ
+	pPtr[3]=reserve
 	*/
 
@@ -181,5 +182,5 @@
 	if( method == NULL ) return;
 
-	//mov rcx,DestructorProcAddr
+	//mov rcx,DestructorProcAddr（デストラクタの関数ポインタ）
 	op_mov_RV(sizeof(_int64),REG_RCX,0);
 	obp-=sizeof(long);
@@ -191,4 +192,9 @@
 	op_mov_MR(sizeof(_int64),REG_RCX,REG_RAX,0,MOD_BASE);
 
+	//add rax,PTR_SIZE
+	op_add_RV(REG_RAX,PTR_SIZE);
+
+
+	// リザーブ領域
 	//add rax,PTR_SIZE
 	op_add_RV(REG_RAX,PTR_SIZE);
@@ -220,6 +226,6 @@
 	if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) SetError(122,NULL,cp);
 
-	//sub rax,PTR_SIZE*3
-	op_sub_RV(sizeof(_int64),REG_RAX,PTR_SIZE*3);
+	//sub rax,OBJECT_HEAD_SIZE
+	op_sub_RV(sizeof(_int64),REG_RAX,OBJECT_HEAD_SIZE);
 
 	//mov qword ptr[rsp+offset],rax     ※スタックフレームを利用
@@ -244,4 +250,9 @@
 	op_mov_RM(sizeof(_int64),REG_RDI,REG_RAX,0,MOD_BASE);
 
+	//add rax,PTR_SIZE
+	op_add_RV(REG_RAX,PTR_SIZE);
+
+
+	// リザーブ領域
 	//add rax,PTR_SIZE
 	op_add_RV(REG_RAX,PTR_SIZE);
Index: /BasicCompiler_Common/common.h
===================================================================
--- /BasicCompiler_Common/common.h	(revision 122)
+++ /BasicCompiler_Common/common.h	(revision 123)
@@ -62,4 +62,5 @@
 
 #define PTR_SIZE		sizeof(LONG_PTR)
+#define OBJECT_HEAD_SIZE PTR_SIZE*4
 
 #define MAX_LEN			65535
Index: /ProjectEditor/ProjectEditor.vcproj
===================================================================
--- /ProjectEditor/ProjectEditor.vcproj	(revision 122)
+++ /ProjectEditor/ProjectEditor.vcproj	(revision 123)
@@ -266,5 +266,5 @@
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib imm32.lib htmlhelp.lib rpcrt4.lib"
+				AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib imm32.lib htmlhelp.lib rpcrt4.lib libcp.lib"
 				OutputFile="../TheText/TheText.exe"
 				LinkIncremental="1"
