- 締切済み
C言語に関する質問
以下のプログラムは問題なく動く場合もあればエラーが出る可能性もある。その理由は何ですか? 安定動作をさせるためにはどうしたらよいですか? #include<stdio.h> #include<stdlib.h> void main(void){ double *a; a=malloc(1); *a=1.0; printf("%f,%x\n",*a,a); free(a); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- satou_aji
- ベストアンサー率20% (1/5)
回答No.3
こんにちは。 私も勉強中なので不正確な情報になるかもしれませんが。 malloc( )の( )の中に入るのは動的配列を作るにあたって確保するスペースの大きさです。 ですから、 "a=malloc(1);" の行は次のように書くのが適切だと思います。 a=malloc(sizeof(double) * 1); ()の中は、「ダブルの数値1つが入るだけのスペース」という意味になっています。 問題なく動く場合がある理由は、すみませんが不勉強で分かりません。