Image

Imageschwermer wrote in Imageru_cpp

malloc

Объясните ньюбу. Пишу программку. В программке одна из функций занимается тем, что "творит" динамический несимитричный массив. Вида примерно такого:

int func(char*** var) {
   char** tmp = (char **)malloc(переменная 1* sizeof(char *));
   if(tmp == NULL) {
      return 1;
   }
   for(x=0; x<переменная 1; x++) {
     tmp[x] = (char *)malloc(переменная 2 * sizeof(char));
      if(tmp[x] == NULL) {
         _free(tmp, x);
         return 1;
      }
   }
   return 0;
}

void _free(char*** var, int szVar) {
   for(int x = 0; x < szVar; x++) {
      free(var[x]);
   }
   free(var);
}

Всё прекрасно работает. Только маты типа "junk pointer, too low to make sense". Соответсвенно два вопроса:
1) Надо ли вообще реагировать на tmp == NULL
2) Надо ли чистить выделенную память циклом, или достаточно освободить самый первый указатель?