次のようなことをする場合:
char array[2][5] = {"cars", "tags"}
char array2[] = "computer";
(最初の行に対して) に等しいメモリが暗黙的に割り当てられています。
sizeof(array); OR
sizeof(char*10);
または、どのようにやりたいか。
または、次のようにすることもできます。
char *ptr = "cars";
char *ptr2 = malloc(sizeof(*ptr2)*5);
*ptr2 = "cars";
malloc を使用して明示的にメモリを割り当てるためにポインターを使用している場合は、free(ptr); を使用してそのポインターを解放することをお勧めします。
しかし、上記のように定義した場合、メモリの明示的な割り当てと同じ理由で、次の呼び出しが必要ですか?
free(ptr);
free(ptr2);
free(array);
free(array2);
-- 余談ですが、上記の宣言/初期化はすべて暗黙的に NULL で終わる文字列ですよね?