Структура памяти для createMultiArray()
будет выглядеть следующим образом:
codes[i] codes[i][j]
*** ** *
+-+ +-+ +-+-+
|0|-------->| |----------->| | |
+-+ +-+ +-+-+
|1|-----+ | |
+-+ | +-+ | |
|2| +-->| | | +------------- char
+-+ +-+ +--------------- char
|3| | +
+-+ +-+
|4|
+-+ .... ....
Теперь вернитесь и освободите каждую память, которую вы создали, используя free [да, для каждого malloc()
должно быть free()
]
OTOH, ты уверен, что хочешь это сделать?
for ( i = 0; i <= 4; i++ ) {
codes[i] = malloc((i+1) * sizeof(char*));
....
}
for i=0, malloc will create 1 memory cell
for i=1, malloc will create 2 memory cell
for i=2, malloc will create 3 memory cell
for i=3, malloc will create 4 memory cell
for i=4, malloc will create 5 memory cell
Это намеренно?