|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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");
- }
复制代码 |
|