鱼C论坛

 找回密码
 立即注册
查看: 1994|回复: 2

小白求教 关于二级三级指针的疑问

[复制链接]
发表于 2020-3-6 12:50:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-6 15:03:38 | 显示全部楼层
free是要和malloc搭配使用
你看看你使用的malloc的时候,是返回的几级指针?你有申请过三级的指针吗?
你不能因为看到有一个char *** 就觉得要free它
举个例子:
void swap(int* a,int* b){
        int temp;
        temp=*a;
        *a=*b;
        *b=temp;


}


void test(){


        int a,b;
        a=1;
        b=2;
        swap(&a,&b);
        printf("%2d,%2d",a,b);
        

        
}
你看到int*为啥不free呢?因为你根本没有malloc何须free呢?
因此,当你malloc的时候,你才需要对这个malloc产生的指针进行free,其他不用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-7 11:56:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 23:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表