三级指针打造自己的二维数组

来源:互联网 发布:移动高速网络速度 编辑:程序博客网 时间:2024/06/05 19:42


#include <stdio.h>#include <stdlib.h>#include <string.h>int getMemory(char ***myPointer,int num,int dem){char **tmp = (char**)(malloc)(num*sizeof(char*));for (int i = 0; i < num; i++){tmp[i] = (char*)malloc(dem * sizeof(char));}*myPointer = tmp;return 0;}//该版本的有悬垂指针的问题int freeMemeory(char **q, int num){if (q == NULL){return -1;}for (int i = 0; i < num; i++){free(q[i]);}free(q);q = NULL;//垃圾代码,不能修改实参的值}int freeMemeoryReal(char ***q, int num){if (q == NULL){return -1;}char **p = *q;for (int i = 0; i < num; i++){free((*q)[i]);}free(*q);*q = NULL;}void main(){#if 0char c = 49;char *p = &c;char **q = &p;**q = 50;printf("%c\n", *p);#endifint inum = 10;int idem = 128;char **p = NULL;getMemory(&p, inum, idem);char *buf = "hello world";for (int i = 0; i < inum; i++){memcpy(p[i], buf, strlen(buf)+1);}for (int i = 0; i < inum; i++){printf("%s\n",p[i]);}//freeMemeory(p, inum);freeMemeoryReal(&p, inum);}


0 0