commit 2025-09-12 14:54 add ZIFreeHeap in ZCppMain/ZMainHead.H

This commit is contained in:
2025-09-12 14:54:11 +09:00
parent 8a770d21ab
commit 2513842f7f
2 changed files with 74 additions and 21 deletions

View File

@ -3765,6 +3765,57 @@ namespace ZNsMain
class ZCFreeAllocBase*/ class ZCFreeAllocBase*/
namespace ZNsIFace
{
// 자료 구조에서 자유 기억 공간을 구현하는 interface
class ZIFreeHeap
{
public:
template
<typename TTypeLink, typename TTypSize=ZTypLong>
class ZtIMain
{
public:
void RecvFreeIn(TTypeLink* AP_CutLink){}
void RecvFreeIn ////////////////////////
(
TTypeLink* AP_CutHead ,
TTypeLink* AP_CutTail ,
TTypSize AL_CutCnt
)
{ } ////////////////////////////////////
TTypeLink* SendFreeOut(){}
void SendFreeOut /////////////////
(
TTypeLink*& APR_NewHead ,
TTypeLink*& APR_NewTail ,
TTypSize AL_NeedCnt
)
{ } ////////////////////////////////////
void DeleteHeap(){}
public:
};/*
template
<typename TTypeLink, typename TTypSize=ZTypLong>
class ZtIMain */
public:
};/*
class ZIFreeHeap*/
}/*
namespace ZNsIFace*/
// 자유 기억 공간을 총괄하는 단방향 연결 리스트 // 자유 기억 공간을 총괄하는 단방향 연결 리스트
class ZCHeapAllocList class ZCHeapAllocList
@ -3994,6 +4045,7 @@ namespace ZNsMain
public : public :
ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData ){} ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData ){}
ZtCObjPtr(ZtCObjPtr& AR_Rhs ) : mr_TypeData(AR_Rhs.mr_TypeData){}
TypeData* operator->(){return &mr_TypeData;} TypeData* operator->(){return &mr_TypeData;}
TypeData& operator* (){return mr_TypeData;} TypeData& operator* (){return mr_TypeData;}

View File

@ -58,6 +58,7 @@ namespace ZNsMain
typedef const ZCIterator const_iterator; typedef const ZCIterator const_iterator;
public: public:
class ZCLink : public TypeAlloc class ZCLink : public TypeAlloc
{ {
public : public :
@ -1034,14 +1035,18 @@ namespace ZNsMain
ZtCObjList& DeleteAll() ZtCObjList& DeleteAll()
{ {
if(mp_HeadLink!=0) if(mp_HeadLink==0) return *this;
{
OnDelete( OnDelete /*============================*/
mp_HeadLink, 1, mp_HeadLink->mp_PrevLink, ml_Size); (
mp_HeadLink , 1 ,
mp_HeadLink->mp_PrevLink, ml_Size
);
/*=====================================*/
ZCLink* VP_DelLink=0 ; ZCLink* VP_DelLink=0 ;
do //// do ///////////////////
{ {
VP_DelLink =mp_HeadLink ; VP_DelLink =mp_HeadLink ;
mp_HeadLink=mp_HeadLink->mp_NextLink ; mp_HeadLink=mp_HeadLink->mp_NextLink ;
@ -1050,11 +1055,7 @@ namespace ZNsMain
} }
while(--ml_Size>0); while(--ml_Size>0);
mp_HeadLink =0; mp_HeadLink =0; return *this;
}/*
if(mp_HeadLink!=0)*/
return *this;
}/* }/*
ZtCObjList& DeleteAll()*/ ZtCObjList& DeleteAll()*/
@ -1168,7 +1169,7 @@ namespace ZNsMain
{ {
if(AL_DefaultSize<1 || AL_AddPos<1 || AL_AddPos>ml_Size+1) if(AL_DefaultSize<1 || AL_AddPos<1 || AL_AddPos>ml_Size+1)
return 0; return 0;
////////////////////////////////////////////////////////// /*======================================================*/
ZtCObjList VO_StoreList; MakeDefault( ZtCObjList VO_StoreList; MakeDefault(
AL_DefaultSize, VO_StoreList); AL_DefaultSize, VO_StoreList);