有关C二维指针的一些笔记

u8** Fat32_parse(char *string,u8* lay_count)
{
 u8 **name;
 u8 i,j;
 name=(char**)mymalloc(0,8*sizeof(char*));
 for(i=0;i<8;i++)
 name[i]=mymalloc(0,16);
 for(i=0;i<8;i++)
   Fat32_Null(name[i],16);
 i=0;
 j=0;
while(*string!=0)
 { 
  if(*string!='/'){
    name[i][j]=*string;
j++;
  }
  else
  {
  name[i][j]=0;
   i++;
   (*lay_count)++;
   j=0;
  }
  string++;
 }
  (*lay_count)++;
 return name;
}

函数返回值是一个二维指针,程序最初没有加

name=(char**)mymalloc(0,8*sizeof(char*));

这句话导致运行一直有问题。指针动态分配内存不会随着一个函数生命的结束而结束,但是如果没有这个句话那么二维指针的 的行指针就成了野指针。





你可能感兴趣的:(指针)