我们先来看一段代码:
char** aa=(char**)malloc(initsize*sizeof(char));
aa[0][0]='c';
这个时候就会报错,原因是内存无法读取。
为什么呢:我们在使用
char** aa=(char**)malloc(initsize*sizeof(char));
的时候,只分配了aa[0]这个子字符串的内存,也就是说只分配到了第一级指针。第二级指针的内存是没有被分配的
当我们需要调用的时候,首先应当对二级指针区域进行分配,之后才可以进行操作。需要操作几层就分配几层
代码改为:
char** aa=(char**)malloc(initsize*sizeof(char));
aa[0]=(char*)malloc(initsize*sizeof(char));
//对第一层进行内存的分配
aa[0][0]='c';
这个时候才可以进行修改。因为已经对二级指针分配了空间