??C?????C++???????
???????????? ???????[ 2012/12/21 10:11:55 ] ????????
?????????????????У?????n?????????????????λ??????ch??pBuff???????????????????chλ??????????pBuff??????malloc??????????????λ??????
????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????У????????????????????????????????????Ρ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ч????????????????????????
??????????????????????????malloc?????????????????????????????????????????????????????????????????free????
?????????????????
//??????????????
typedef struct _CListen_ListenAcceptTask_Param_
{
Linux_Win_SOCKET m_nSocket;
//????????… …
}SCListenAcceptTaskParam;
//?????д???????y??????????????????磬?????malloc??????
const ULONG SCListenAcceptTaskParamSize = sizeof(SCListenAcceptTaskParam);
//??????????????????????????????????????????????????????????????
bool CListen::ListenTaskCallback(void* pCallParam??int& nStatus)
{
//????????????… …
//???s??accept????socket??????????????????
//???????????????????????????
SCListenAcceptTaskParam* pParam = (SCListenAcceptTaskParam*) malloc(SCListenAcceptTaskParamSize);
//???????????
pParam->m_nSocket = s;
//????????????pParam????????… …
//????????????… …
}
//??????????????????????accept????socket
bool CListen::ListenAcceptTask(void* pCallParam??int& nStatus)
{
//????仰??????????????????????紫??????????
SCListenAcceptTaskParam* pParam= (SCListenAcceptTaskParam*)pCallParam;
//????????????… …
//??????????????????????????????й?
close(pParam->m_nSocket); //???socket
free(pCallParam); // free????????????
//… …
}
??????????bug
???????????????????????′?????bug?????????????????????????????????????????????????????
???????????????????bug???
??????1????????????????????????????????棬?????????????????????????????????????????????????????????????????????????????free???????????????????????????
free(p); p = NULL;
??????????????????????????????????????????????????????????????
??????2????д??overwrite???????????????д??????????????????????????д??????????д?Щ???????????????????????????????д???????????????????????
p=malloc(256);p[-1]=0;p[256]=0;
??????3??????????????????????????????Σ?????????δ?????malloc???????棬?????????????е???棬??????????Ч??????????????????????????й????????? for(p=start;p=p->next) ??????????е????????????????????????? free(p) ????????????????????????????????????????????н?????ò???????????2???????????
?????????????????????
struct node *p?? *tart?? *temp;
for(p = start; p ; p = temp)
{
temp = p->next;
free(p);
}
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11