内存四区--二级指针间接赋值

    科技2022-08-14  97

    这个函数的作用是,给主函数的变量间接赋值,这是二级指针的一个应用。 主函数不必考虑getMem3这个子函数是怎样实现的,这个思想很重要。

    // 这个函数作用是,计算文件1和文件2的长度 // main()中的变量,不需要知道getMem函数是怎样实现的 void getMem3(char **myp1,int *mylen1,char **myp2,int *mylen2) { int ret = 0; char *tmp1, *tmp2; tmp1 = (char*)malloc(100); strcpy(tmp1, "11111111111"); // 间接赋值 *mylen1 = strlen(tmp1); //1级指针 *myp1 = tmp1; //2级指针的间接赋值 tmp2 = (char *)malloc(200); strcpy(tmp2, "22222222222"); *mylen2 = strlen(tmp2);// tmp2内存的大小 *myp2 = tmp2; //2级指针的间接赋值 return ret; } int main() { int ret = 0; // 在常量区开辟4个字节的内存空间,赋值为0 char *p1 = NULL; //在栈中开辟一个p1 int len1 = 0; // char *p2 = NULL;//在栈中开辟一个p2 int len2 = 0; getMem3(&p1, &len1, &p2, &len2); printf("p1:%s \n", p1); printf("p2:%s \n", p2); system("pause"); return 1; }

    下面是对应的内存图

    Processed: 0.009, SQL: 8