• ベストアンサー

mallocで char *型の配列を確保したい

char *方の配列を動的確保する必要が出たのですが、 char **array=(char **)malloc((char *) * 10); としてうまくいきません どうすれば確保できるのでしょうか 知っている方がいましたら教えてください ちなみに確保した配列はこの様に使えるようにしたいです strcpy(array[0],"testest");

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

char **array = (char**)malloc(sizeof(char*) * 10); ↑の一行はokだけど、これはアドレスを格納する箱を10個用意するだけですよ。 なので実際に使うときは、箱の中のエリアを確保せねばなりません。 array[0] = (char*)malloc(256); strcpy(array[0], "testtest"); これはarray[1]~array[9]もすべて同じ。 もちろんmallocで確保したメモリはfreeで解放するのも忘れずに。 free(array[0]); ; free(array[9]); free(array);

tukai
質問者

お礼

この方法で成功しました 有難うございました

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

> char **array=(char **)malloc((char *) * 10); No.1のかたが補足されていますが、malloc()の引数の中に sizeofの記述を加えてください。 このように確保したarray[0]~array[9](配列もどき)の領域に対して 実際にどれだけの領域を確保するかも、No.1のかたの 解説どおりです。

関連するQ&A