Двумерный массив не совпадает с массивом указателей .
Ваш первый оператор создает два массива по шесть символов каждый как один блок памяти .Замените это утверждение на:
char (*array)[6] = new char [2][6];
, и вы будете готовы ко второму утверждению.Не забудьте
delete [] array;
Редактировать 0:
Да, я должен был знать :) На ваш вопрос в комментарии:
Как следуетВпоследствии я передаю массив функции, которая принимает char**
в качестве параметра?
Вы этого не делаете.Не в этой форме.Если вы создаете список параметров для некоторого C API, например execve(2)
, вам придется пройти весь путь с двухэтапной инициализацией:
// prototype of the function to call
void my_fancy_func( int argc, char* const argv[] );
char** my_argv = new char*[my_argc];
for ( i = 0; i < my_argc; i++ ) {
my_argv[i] = new char[arg_buffer_size];
snprintf( my_argv[i], arg_buffer_size, "%d", i );
}
my_fancy_func( my_argc, my_argv );