for (i = 0; i < 10; i++)
{
char a_array[10];
...
a_result[i] = a_array;
}
Вы объявляете массив в стеке в области действия for
цикла. Это означает, что массив станет недействительным, как только вы выйдете из цикла for. То есть содержимое внутри a_result
недопустимо.
Для переменных в стеке компилятор будет повторно использовать одну и ту же область памяти для a_array
в каждом цикле (что не для b_array
, поскольку свежая память будет получена из кучи malloc
). Следовательно, для вашего случая a_result
просто скопировал 10 одинаковых недействительных указателей.
Если вы хотите скопировать содержимое этого массива, сделайте тип a_result
равным
char a_result[10][10];
и используйте
memcpy(a_result[i], a_array, sizeof(a_result[i]));
для копирования в результат.