commit 2025-09-27 08:52 bug fix in DeleteHeap(TypeSize AI_DelCnt) : ZCppMain/ZtCObjList.H

This commit is contained in:
2025-09-27 08:52:19 +09:00
parent 2c553a20e0
commit a407d97d70
4 changed files with 42 additions and 14 deletions

View File

@ -156,7 +156,7 @@ namespace ZNsMain
if(VP_Temp==mp_NoUseTail)
{ break; }
VP_Temp=VP_Temp->GetNexPtr() ;
VP_Temp=VP_Temp->GetNextPtr() ;
}/*
while(true)*/
@ -340,6 +340,7 @@ namespace ZNsMain
APR_TailLink = VP_TempLink;
// 메모리를 더 이상 할당할 수 없었다면
// 이미 만들어진 VL_Count 개의 비원형 이중 링크를 지운다.
@ -626,6 +627,9 @@ namespace ZNsMain
ml_AllSize -= AI_DelCnt;
ml_UseSize -= AI_DelCnt;
if(ml_UseSize<1)
mp_NoUseHead = mp_NoUseTail = 0 ;
return AI_DelCnt;
}/*
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
@ -1085,7 +1089,7 @@ namespace ZNsMain
}
else
{
ZCLink* VP_TailLink=AO_CObjList.mp_HeadLink->mp_PrevLink;
ZCLink* VP_TailLink = AO_CObjList.mp_HeadLink->mp_PrevLink;
ZCLink::MakeCircle(AO_CObjList.mp_HeadLink, mp_HeadLink->mp_PrevLink);
ZCLink::JoinLink (VP_TailLink , mp_HeadLink );
@ -1403,7 +1407,7 @@ namespace ZNsMain
{
return DeleteAll();
}
else if(ml_Size<=rhs.ml_Size)
if(ml_Size<=rhs.ml_Size)
{
AddDefault(rhs.ml_Size-ml_Size, ml_Size+1);
}
@ -1863,7 +1867,7 @@ namespace ZNsMain
if(CB_IsTrue) return 0; //////////////////
ZtCObjList VO_StoreList; MakeDefault
(AL_DefaultSize, VO_StoreList);
( AL_DefaultSize, RR(VO_StoreList) ) ;
ZCLink* VP_HeadLink= VO_StoreList.mp_HeadLink;
@ -2337,6 +2341,7 @@ namespace ZNsMain
}/*
template<typename TFunctor> void IterElement(TFunctor AO_Functor) */
template<typename TFunctor, typename TTypeHelp>
void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
{

View File

@ -628,6 +628,9 @@ namespace ZNsMain
ml_AllSize -= AI_DelCnt;
ml_UseSize -= AI_DelCnt;
if(ml_UseSize<1)
mp_NoUseHead = mp_NoUseTail = 0 ;
return AI_DelCnt;
}/*
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
@ -1025,6 +1028,8 @@ namespace ZNsMain
{
// AP_CopyLink 부터 AP_CopyLink->GetNextPrePtr(AL_FarNum)
// 링크까지를 복사한다. 총 AL_FarNum + 1 개의 링크가 만들어진다.
//
// ARR_StoreList.size() 는 0 이어야 한다.
ZCLink* VP_HeadLink=0;
ZCLink* VP_TailLink=0;
@ -1038,7 +1043,7 @@ namespace ZNsMain
);
//////////////////////////////
VP_TailLink->mp_NextLink=0;
ZCLink::MakeCircle(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.mp_TailLink= VP_TailLink ;
@ -1263,13 +1268,17 @@ namespace ZNsMain
{ DeleteAll(); }
if(rhs.ml_Size==0 ){return *this;}
#if(_CODE_NEW_)
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1, *this); return *this;
#else
ZtCSimList VO_StoreList;
JoinHead ///////////////////////////
(
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1 ,VO_StoreList)
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1, VO_StoreList)
);
return *this; //////////////////////
#endif
}/*
ZtCSimList& operator=(const ZtCSimList& rhs)*/
@ -2136,6 +2145,7 @@ namespace ZNsMain
inline bool IsEmpty() const*/
// ***************************************************************** //
// *********************** Functor 부분 시작 *********************** //
@ -2207,7 +2217,7 @@ namespace ZNsMain
__for0(TTypSize, i, ml_Size)*/
}/*
template
<typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
<typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElement
(TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2)
*/
@ -2256,13 +2266,13 @@ namespace ZNsMain
template<typename TFunctor> void IterEleCutIf(TFunctor AO_Functor) */
template<typename TFunctor> void IterEleLink
template<typename TFunctor> void IterEleLink ////////////////////////
(
ZCLink* AP_StdLink ,
TTypSize AL_WorkDistance,
TFunctor AO_Functor
)
/*########################################*/
/*#################################################################*/
{
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
@ -2297,20 +2307,21 @@ namespace ZNsMain
}/*
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)*/
}/*
void IterEleLink /////////////////
void IterEleLink ////////////////////////////////////////////////////
(
ZCLink* AP_StdLink ,
TTypSize AL_WorkDistance,
TFunctor AO_Functor
)
////////////////////////////////*/
/*#################################################################*/
// ***************************************************************
// ******************************************************************
// *********************** Functor 부분 끝 ***********************
// ************************* Functor 부분 끝 ************************
// ******************************************************************
// ***************************************************************
/*///////////////////////////////////////////////////////////////////////////

View File

@ -182,6 +182,12 @@ namespace ZNsMain
cout<<"# list11 IterElemRev ####" <<endl;*/
VO_ListOfStr10 = VO_ListOfStr11 ;
cout<<"# list10 IterElement after list10 = list11"<<endl;
VO_ListOfStr10.IterElement(&ShowDataInNode);
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/

View File

@ -232,6 +232,12 @@ namespace ZNsMain
VO_ListOfStr11.IterElement(ZftMCP(VO_CHelpObj));
VO_ListOfStr11 = VO_ListOfStr10 ;
cout<<"# list11 IterElement : after list11=list10" <<endl;
VO_ListOfStr11.IterElement(ZftMCP(VO_CHelpObj));
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/