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) Надо ли чистить выделенную память циклом, или достаточно освободить самый первый указатель?
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) Надо ли чистить выделенную память циклом, или достаточно освободить самый первый указатель?
