首页 热点专区 义务教育 高等教育 出国留学 考研考公

c/c++怎么用free释放二级指针

发布网友 发布时间:2022-04-22 09:39

我来回答

2个回答

热心网友 时间:2022-07-13 20:59

#include <string.h>
#include <stdio.h>
#include <malloc.h>

#define BOOL int
#define FALSE 0
#define TRUE 1

BOOL GetStrBuf(char **ppBuf, int nLen)
{
(*ppBuf) = (char *)malloc(nLen * sizeof(char));

return ((NULL == (*ppBuf)) ? FALSE : TRUE);
}

void FreeStrBuf(char **ppBuf)
{
if (NULL != (*ppBuf))
{
free((*ppBuf));
(*ppBuf) = NULL;
}
}

int main(void)
{
char *pBuf = NULL;
char *pData = "Hello, wrold !";
int nLen;
BOOL bRet;

nLen = strlen(pData);

// get buf for pBuf
bRet = GetStrBuf(&pBuf, nLen+1);

// if get buffer fail
if (!bRet)
{
printf("malloc for string buf fail !/n");
return -1;
}
// clear the buffer for copy
memset(pBuf, 0, nLen+1);

strncpy(pBuf, pData, nLen);
printf("pData is: %s/n", pData);
printf("pBuf is: %s/n", pBuf);

// free had malloc mem buf
FreeStrBuf(&pBuf);
// then the pBuf = NULL, 0x0

return 0;
}

热心网友 时间:2022-07-13 20:59

和申请顺序相反,先释放第二级指针,再释放第一级指针
for(int i=0;i<people;i++)
{
free name[i];
}

free name;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com