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*/
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
@ -3993,7 +4044,8 @@ namespace ZNsMain
TypeData& mr_TypeData;
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;}

View File

@ -58,6 +58,7 @@ namespace ZNsMain
typedef const ZCIterator const_iterator;
public:
class ZCLink : public TypeAlloc
{
public :
@ -748,7 +749,7 @@ namespace ZNsMain
}
else if(ml_Size<=rhs.ml_Size)
{
AddDefault(rhs.ml_Size-ml_Size,ml_Size+1);
AddDefault(rhs.ml_Size-ml_Size, ml_Size+1);
ZCLink* pRhsLink=rhs.mp_HeadLink;
ZCLink* pLhsLink= mp_HeadLink;
@ -1034,27 +1035,27 @@ namespace ZNsMain
ZtCObjList& DeleteAll()
{
if(mp_HeadLink!=0)
if(mp_HeadLink==0) return *this;
OnDelete /*============================*/
(
mp_HeadLink , 1 ,
mp_HeadLink->mp_PrevLink, ml_Size
);
/*=====================================*/
ZCLink* VP_DelLink=0 ;
do ///////////////////
{
OnDelete(
mp_HeadLink, 1, mp_HeadLink->mp_PrevLink, ml_Size);
VP_DelLink =mp_HeadLink ;
mp_HeadLink=mp_HeadLink->mp_NextLink ;
ZCLink* VP_DelLink=0;
delete VP_DelLink;
}
while(--ml_Size>0);
do ////
{
VP_DelLink =mp_HeadLink;
mp_HeadLink=mp_HeadLink->mp_NextLink ;
delete VP_DelLink;
}
while(--ml_Size>0);
mp_HeadLink =0;
}/*
if(mp_HeadLink!=0)*/
return *this;
mp_HeadLink =0; return *this;
}/*
ZtCObjList& DeleteAll()*/
@ -1168,7 +1169,7 @@ namespace ZNsMain
{
if(AL_DefaultSize<1 || AL_AddPos<1 || AL_AddPos>ml_Size+1)
return 0;
//////////////////////////////////////////////////////////
/*======================================================*/
ZtCObjList VO_StoreList; MakeDefault(
AL_DefaultSize, VO_StoreList);