C言語での動的メモリアロケーションとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > C言語での動的メモリアロケーションの意味・解説 

C言語での動的メモリアロケーション

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/02 03:24 UTC 版)

malloc」の記事における「C言語での動的メモリアロケーション」の解説

mallocC言語におけるヒープ領域からのメモリ確保使われる基本関数である。その関数プロトタイプはstdlib.hヘッダ次のように定義されている。 void *malloc(size_t size) ここで、sizeバイトメモリ確保される確保成功するとそのメモリブロックへのポインタ返されるANSI Cにおいてmalloc返すのは、void型へのポインタ (void *) であり、そのポインタが指す領域データ型不明であることを示している。C言語では汎用ポインタvoid *と任意の型TへのポインタT *との間の型変換 (キャスト) は暗黙的に実行されるため、malloc戻り値は特に明示的な型変換記述せずとも任意の型へのポインタ変数そのまま代入できる。しかし、明示的に型変換記述する必要が無いにもかかわらず、あえて意図的に型変換記述することもある。明示的に型変換記述する目的は、かつてANSI以前仕様のC(K&R C)においてはvoid *が存在せずmallocchar *を返していたからである。また、C言語よりも厳密な型システムを持つC++では、T *からvoid *への型変換暗黙的に行なわれるものの、void *からT *への型変換暗黙的に行なわれないため、C/C++両方コンパイルすることのできるソースコードを書く際には型変換記述が必要となる。 int *ptr = (int *)malloc(sizeof(int) * 10); しかし、stdlib.hをインクルード忘れた場合malloc関数前方宣言ない場合)、Cコンパイラmallocint型返す関数であるとみなす。malloc戻り値明示的に型変換していると、ヘッダーインクルード忘れたことに気づかない一方明示的に型変換ていないと、コンパイル時にintポインタ型変数代入ようとしているとして何らかの警告あるいはエラーメッセージコンパイラから表示されることでインクルード忘れに気づける可能性がある。例え64ビットシステムでLP64というデータモデル採用している場合longポインタ64ビットだが、int32ビットとなる。この場合stdlib.hのインクルード忘れ気づかないと、malloc実際に64ビットポインタ返すのに、32ビットの値を返す暗に宣言したことになり、バグ生じ可能性がある。ただし、多くコンパイラ宣言のない関数使用していると(キャスト有無かかわらずコンパイル時に警告を出す。

※この「C言語での動的メモリアロケーション」の解説は、「malloc」の解説の一部です。
「C言語での動的メモリアロケーション」を含む「malloc」の記事については、「malloc」の概要を参照ください。

ウィキペディア小見出し辞書の「C言語での動的メモリアロケーション」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「C言語での動的メモリアロケーション」の関連用語

1
8% |||||

C言語での動的メモリアロケーションのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



C言語での動的メモリアロケーションのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのmalloc (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS