Я хочу создать массив строк, используя mallo c, а затем очистить ВСЕ выделенную память, я считаю, что я правильно использую mallo c, но я не могу понять, что я делаю неправильно, когда я пытаюсь чтобы очистить его:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void print_arr(char* arr[]);
void clear_arr(char* arr[], int size);
int main()
{
int number = 10;
char **myarr = malloc((number+1)*sizeof(char*));
for (int i = 0; i <= number; i++)
{
myarr[i]=NULL;
}
for (int i = 0; i < number; i++)
{
char str[] = "word";
int len = strlen(str);
myarr[i]=malloc((len+1)*sizeof(char));
strcpy(myarr[i], str);
}
print_arr(myarr);
clear_arr(myarr, number);
print_arr(myarr);
free(myarr);
return 0;
}
void print_arr(char* arr[])
{
for (int i = 0; arr[i] != NULL; i++)
{
printf("%s\n",arr[i]);
}
}
void clear_arr(char* arr[], int size)
{
for (int i = 0; i < size; i++)
{
free(arr[i]);
}
}
но мой вывод для числа = 3:
word
word
word
Pi╛
word
word
похоже, что только первая "ячейка" массива освобождается, а другая не влияет что не так с моей функцией clear_arr? Я использую VScode для компиляции, если это имеет значение ...