Привет. Пробую создать двумерный динамический массив:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
unsigned long arr_len = 8;
char **array;
char *testword = "TEST";
array = malloc(arr_len);
for(unsigned long step = 0; step <= arr_len; step++)
{
array[step] = malloc((unsigned long)strlen(testword) + 1);
strcpy(array[step], testword);
}
for(unsigned long step = 0; step <= arr_len; step++)
printf("-> array[%ld]: %s\n", step, array[step]);
return 0;
}
Указываю количество элементов в массиве и выделяю память для каждого элемента массива, но при проверке элементов некоторые из них заполнены мусором. Если память выделять через calloc, то все норм. Почему именно в этом примере ошибка?