1

malloc() とは何か、なぜそれが使用されるのかを理解しようとしています。malloc はメモリの動的割り当て用であることを理解しています。作成したくないメモリの量がわからない場合に必要です。私はそれについていくつかの実践を行ってきました。

次のコードは文字ポインタの配列を宣言し、最初の文字ポインタは「hello」で初期化されます。これはうまくいきます。

int main()
{


char *strarray[5];
strarray[0]="hello";
printf("%s\n",strarray[0]);
return 0;
}

しかし、strcpy() 関数を使用して "hello" 文字列を strarray[0] (malloc() なし) にコピーしようとすると、問題が発生します。そして、何らかのループに入り、文字列をコピーしません。また、malloc を使用してメモリを割り当てると、正常に動作します。

int main()
{

char *strarray[5];
//strarray[0]=(char *)malloc(sizeof(char)*10);
strcpy(strarray[0],"hello");
printf("%s\n",strarray[0]);
return 0;
}

何が違いを生むのか知りたいですか?"hello" を malloc が使用されていない char ポインターに初期化できる場合、なぜ strcpy() で同じことができないのでしょうか。

4

3 に答える 3