Я создал 2d массив символов.Для каждого arr [0], который я выделяю, я выделяю для него один столбец "arr [0] [0], arr [1] [0], ..." Однако у меня есть доступ к большему количеству памяти, чем выделено для каждого столбца.У меня есть доступ к arr [0] [1], arr [0] [2], ... Согласно пониманию, у меня не должно быть доступа к arr [0] [1], если я не выделю для него память.
Я включил комментарии, отражающие мое понимание кода
char ** sArr = malloc(sizeof(char*)); // create sArr[0]
sArr[0] = malloc(sizeof(char*)); // create sArr[0][0]
sArr[0][0] = 'a';
sArr[0][1] = 'b';
sArr[0][2] = 'c';
printf("%c\n", sArr[0][0]); // outputs 'a' as expected
printf("%c\n", sArr[0][1]); // outputs 'b', expected error or garbage
printf("%c\n", sArr[0][2]); // outputs 'c', expected error or garbage
Я считаю, что смогу назначить
sArr[0][1]='b'
, только если я использовал
sArr[0] = malloc(2*sizeof(char*));