马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
void getMen(char*** myp2, int num)
void getFree(char** myp2, int num)//void getFree(char*** myp2,int num)
请问后面释放内存的时候,为啥必须用三级指针,不能用二级指针吗?二级指针不是同样指向在堆中开辟的5个字节的空间吗 ?char** tmp = (char**)malloc(sizeof(char*) * num);
还有,啥时候用二级指针?
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void getMen(char*** myp2, int num)
{
int i;
char** tmp = (char**)malloc(sizeof(char*) * num);
if (tmp == NULL)
{
return;
}
for (i = 0; i < 5; i++)
{
tmp[i] = (char*)malloc(sizeof(char) * 10);
sprintf(tmp[i], "%d%d%d", i + 1, i + 1, i + 1);
}
*myp2 = tmp;
}
void getFree(char** myp2, int num)//void getFree(char*** myp2,int num)
{
int i;
if (myp2 == NULL)
{
return;
}
//char** tmp = *myp2;
for (i = 0; i < num; i++)
{
free(myp2[i]);
myp2[i] = NULL;
}
free(myp2);
myp2 = NULL;
}
void main()
{
int i;
int num = 5;
char** p2 = NULL;
getMen(&p2, num);
for (i = 0; i < num; i++)
{
printf("%s\n", p2[i]);
}
printf("\n");
getFree(p2, num);
system("pause");
}
|