//\r
\r
CHNLIB_String *CHNLIB_String_Internal_Allocate(void);\r
+void CHNLIB_String_Internal_Destruct(void **structure);\r
\r
//\r
//Define types\r
CHNLIB_String *strtag;\r
\r
strtag = CHNLIB_String_Internal_Allocate();\r
+ strtag->header.destructor = &CHNLIB_String_Internal_Destruct;\r
\r
if(str != NULL){\r
CHNLIB_String_SetStringFromCString(strtag, str);\r
CHNLIB_StructureHeader_Initialize(&tag->header, CHNLIB_STRUCT_ID_String);\r
\r
return tag;\r
-}
\ No newline at end of file
+}\r
+\r
+void CHNLIB_String_Internal_Destruct(void **structure)\r
+{\r
+ //デストラクタ(実際にRelease->freeされる時に呼ばれる)\r
+ if(structure == NULL){\r
+ return;\r
+ }\r
+ \r
+#ifdef DEBUG_MEMORY_REFERENCE_COUNT\r
+ CHNLIB_Debug("Release(with free)[%p].", CHNLIB_DEBUG_ARGUMENTS, *structure);\r
+#endif\r
+ \r
+ CHNLIB_String_Free(*structure);\r
+ \r
+ *structure = NULL;\r
+ \r
+ return;\r
+}\r