プロが教える店舗&オフィスのセキュリティ対策術

char *方の配列を動的確保する必要が出たのですが、

char **array=(char **)malloc((char *) * 10);
としてうまくいきません
どうすれば確保できるのでしょうか
知っている方がいましたら教えてください

ちなみに確保した配列はこの様に使えるようにしたいです
strcpy(array[0],"testest");

A 回答 (2件)

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);
    • good
    • 1
この回答へのお礼

この方法で成功しました

有難うございました

お礼日時:2007/06/30 19:06

> char **array=(char **)malloc((char *) * 10);



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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!