OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / release / man3 / malloc.3
index 7fb26f8..6af74ac 100644 (file)
 .\" Documented MALLOC_CHECK_, Wolfram Gloger (wmglo@dent.med.uni-muenchen.de)
 .\" 2007-09-15 mtk: added notes on malloc()'s use of sbrk() and mmap().
 .\"
+.\" FIXME . Review http://austingroupbugs.net/view.php?id=374
+.\" to see what changes are required on this page.
+.\"
 .\"*******************************************************************
 .\"
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH MALLOC 3 2012\-05\-10 GNU "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
+.\" Translated 1998-08-12, NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" Modified 1998-12-18, NAKANO Takeo
+.\" Modified 2000-08-23, NAKANO Takeo
+.\" Modified 2001-05-19, Kentaro Shirakata <argrath@ub32.org>
+.\" Modified 2001-12-13, Kentaro Shirakata <argrath@ub32.org>
+.\" Modified 2005-03-15, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Modified 2007-10-12, Akihiro MOTOKI, LDP v2.66
+.\"
+.TH MALLOC 3 2014\-05\-21 GNU "Linux Programmer's Manual"
 .SH 名前
-malloc, free, calloc, realloc \- allocate and free dynamic memory
+malloc, free, calloc, realloc \- 動的なメモリーの割り当てと解放を行う
 .SH 書式
 .nf
 \fB#include <stdlib.h>\fP
@@ -47,27 +60,27 @@ malloc, free, calloc, realloc \- allocate and free dynamic memory
 .SH 説明
 .PP
 .\" glibc does this:
-\fBmalloc\fP() 関数は \fIsize\fP バイトを割り当て、 割り当てられたメモリに対する
\83\9dã\82¤ã\83³ã\82¿ã\82\92è¿\94ã\81\99ã\80\82\fIã\83¡ã\83¢ã\83ªの内容は初期化されない\fP。 \fIsize\fP が 0 の場合、
+\fBmalloc\fP() é\96¢æ\95°ã\81¯ \fIsize\fP ã\83\90ã\82¤ã\83\88ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\80\81 å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\81\9fã\83¡ã\83¢ã\83ªã\83¼ã\81«å¯¾ã\81\99ã\82\8b
\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82\fIã\83¡ã\83¢ã\83ªã\83¼の内容は初期化されない\fP。 \fIsize\fP が 0 の場合、
 \fBmalloc\fP() は NULL または \fBfree\fP() に後で渡しても問題の起こらない
-一意なポインタ値を返す。
+一意なポインタ値を返す。
 .PP
-\fBfree\fP() 関数はポインタ \fIptr\fP が指すメモリ空間を解放する。このポインタは、
+\fBfree\fP() 関数はポインター \fIptr\fP が指すメモリー空間を解放する。このポインターは、
 以前に呼び出された \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP() のいずれかが返した値で
-なければならない。これ以外のポインタを指定したり、すでに \fIfree(ptr)\fP が実行
\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82ã\81\93ã\82\8c以å¤\96ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92æ\8c\87å®\9aã\81\97ã\81\9fã\82\8aã\80\81ã\81\99ã\81§ã\81« \fIfree(ptr)\fP ã\81\8cå®\9fè¡\8c
 されていたりした場合の動作は定義されていない。
 \fIptr\fP が NULL の場合には、何の動作も行われない。
 .PP
 .\" glibc does this:
-\fBcalloc\fP() 関数は \fIsize\fP バイトの要素 \fInmemb\fP 個からなる配列にメモリを
\89²ã\82\8aå½\93ã\81¦ã\80\81å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\81\9fã\83¡ã\83¢ã\83ªã\81«å¯¾ã\81\99ã\82\8bã\83\9dã\82¤ã\83³ã\82¿ã\82\92è¿\94ã\81\99ã\80\82 ã\83¡ã\83¢ã\83ªの内容は数値ゼロ
+\fBcalloc\fP() é\96¢æ\95°ã\81¯ \fIsize\fP ã\83\90ã\82¤ã\83\88ã\81®è¦\81ç´  \fInmemb\fP å\80\8bã\81\8bã\82\89ã\81ªã\82\8bé\85\8då\88\97ã\81«ã\83¡ã\83¢ã\83ªã\83¼ã\82\92
\89²ã\82\8aå½\93ã\81¦ã\80\81å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\81\9fã\83¡ã\83¢ã\83ªã\83¼ã\81«å¯¾ã\81\99ã\82\8bã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\83¡ã\83¢ã\83ªã\83¼の内容は数値ゼロ
 (全ビットが 0 のバイト) にセットされる。 \fInmemb\fP か \fIsize\fP が 0 の場合、
 \fBcalloc\fP() は NULL または \fBfree\fP() に後で渡しても問題の起こらない一意な
-ポインタ値を返す。
+ポインタ値を返す。
 .PP
-\fBrealloc\fP() は、ポインタ \fIptr\fP が示すメモリブロックのサイズを \fIsize\fP バイト
+\fBrealloc\fP() は、ポインター \fIptr\fP が示すメモリーブロックのサイズを \fIsize\fP バイト
 に変更する。領域の先頭から、新旧のサイズの小さい方の位置までの範囲の内容は
-変更されない。新しいサイズが前のサイズよりも大きい場合、追加されたメモリは
+å¤\89æ\9b´ã\81\95ã\82\8cã\81ªã\81\84ã\80\82æ\96°ã\81\97ã\81\84ã\82µã\82¤ã\82ºã\81\8cå\89\8dã\81®ã\82µã\82¤ã\82ºã\82\88ã\82\8aã\82\82大ã\81\8dã\81\84å ´å\90\88ã\80\81追å\8a ã\81\95ã\82\8cã\81\9fã\83¡ã\83¢ã\83ªã\83¼ã\81¯
 初期化 \fIされない\fP。
 \fIptr\fP が NULL の場合には \fImalloc(size)\fP と等価である。
 \fIsize\fP が 0 で \fIptr\fP が NULL でない場合には、 \fIfree(ptr)\fP と等価である。
@@ -75,43 +88,40 @@ malloc, free, calloc, realloc \- allocate and free dynamic memory
 \fBrealloc\fP() のいずれかが返した値でなければならない。
 \fIptr\fP が指す領域が移動されていた場合は \fIfree(ptr)\fP が実行される。
 .SH 返り値
-関数 \fBcalloc\fP() と \fBmalloc\fP() は、割り当てられたメモリへのポインタを返す。
-割り当てられたメモリは、あらゆる種類の変数に対応できるようにアラインメントされる。
-エラーの場合、これらの関数は NULL を返す。
-\fIsize\fP が 0 で呼び出した \fBmalloc\fP() や、\fInmemb\fP か \fIsize\fP が 0 で呼び出した
-\fBcalloc\fP() が成功した場合にも NULL が返される。
+関数 \fBcalloc\fP() と \fBmalloc\fP() は、割り当てられたメモリーへのポインターを返す。
+割り当てられたメモリーは、あらゆる組み込み型に対応できるようにアラインメントされる。 エラーの場合、これらの関数は NULL を返す。 \fIsize\fP
+が 0 で呼び出した \fBmalloc\fP() や、\fInmemb\fP か \fIsize\fP が 0 で呼び出した \fBcalloc\fP() が成功した場合にも
+NULL が返される。
 .PP
 \fBfree\fP() 関数は値を返さない。
 .PP
-\fBrealloc\fP() 関数は新たに割り当てられたメモリへのポインタを返す。
-これはあらゆる種類の変数に対応できるようにアラインメントされており、
-\fIptr\fP とは異なることもある。割り当て要求に失敗した場合は NULL が返る。
-\fIsize\fP が 0 の場合には、NULL もしくは \fBfree\fP() に渡すことができるポインタが返る。
-\fBrealloc\fP() が失敗した場合には、元のブロックは変更されない。
+\fBrealloc\fP() 関数は新たに割り当てられたメモリーへのポインターを返す。 これはあらゆる組み込み型に対応できるようにアラインメントされており、
+\fIptr\fP とは異なることもある。割り当て要求に失敗した場合は NULL が返る。 \fIsize\fP が 0 の場合には、NULL もしくは
+\fBfree\fP() に渡すことができるポインターが返る。 \fBrealloc\fP() が失敗した場合には、元のブロックは変更されない。
 つまり、解放されたり移動されたりはしない。
 .SH 準拠
 C89, C99.
 .SH 注意
-By default, Linux follows an optimistic memory allocation strategy.  This
-means that when \fBmalloc\fP()  returns non\-NULL there is no guarantee that the
-memory really is available.  In case it turns out that the system is out of
-memory, one or more processes will be killed by the OOM killer.  For more
-information, see the description of \fI/proc/sys/vm/overcommit_memory\fP and
-\fI/proc/sys/vm/oom_adj\fP in \fBproc\fP(5), and the Linux kernel source file
-\fIDocumentation/vm/overcommit\-accounting\fP.
+デフォルトでは、Linux は楽観的メモリー配置戦略を用いている。つまり、
+\fBmalloc\fP() が NULL でない値を返しても、そのメモリーが実際に利用可能であること
+が保証されない。システムがメモリー不足状態になったとき、メモリー不足解決器 (OOM
+killer) によって一つまたは複数のプロセスが削除される。
+詳しい情報は、\fBproc\fP(5) の \fI/proc/sys/vm/overcommit_memory\fP と
+\fIproc/sys/vm/oom_adj\fP、および Linux カーネルのソースファイルの
+\fIDocumentation/vm/overcommit\-accounting\fP を参照のこと。
 
-通常、 \fBmalloc\fP()  は、ヒープからメモリを割り当て、必要に応じてヒープのサイズを \fBsbrk\fP(2)  を使って調節する。
-\fBMMAP_THRESHOLD\fP バイトよりも大きなメモリブロックを割り当てる場合、 glibc の \fBmalloc\fP()  実装は
-\fBmmap\fP(2)  を使ってプライベートな無名マッピング (anonymous mapping) として メモリを割り当てる。 デフォルトでは
\80\9a常ã\80\81 \fBmalloc\fP()  ã\81¯ã\80\81ã\83\92ã\83¼ã\83\97ã\81\8bã\82\89ã\83¡ã\83¢ã\83ªã\83¼ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\80\81å¿\85è¦\81ã\81«å¿\9cã\81\98ã\81¦ã\83\92ã\83¼ã\83\97ã\81®ã\82µã\82¤ã\82ºã\82\92 \fBsbrk\fP(2)  ã\82\92使ã\81£ã\81¦èª¿ç¯\80ã\81\99ã\82\8bã\80\82
+\fBMMAP_THRESHOLD\fP ã\83\90ã\82¤ã\83\88ã\82\88ã\82\8aã\82\82大ã\81\8dã\81ªã\83¡ã\83¢ã\83ªã\83¼ã\83\96ã\83­ã\83\83ã\82¯ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\82\8bå ´å\90\88ã\80\81 glibc ã\81® \fBmalloc\fP()  å®\9fè£\85ã\81¯
+\fBmmap\fP(2)  ã\82\92使ã\81£ã\81¦ã\83\97ã\83©ã\82¤ã\83\99ã\83¼ã\83\88ã\81ªç\84¡å\90\8dã\83\9eã\83\83ã\83\94ã\83³ã\82° (anonymous mapping) ã\81¨ã\81\97ã\81¦ ã\83¡ã\83¢ã\83ªã\83¼ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\82\8bã\80\82 ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯
 \fBMMAP_THRESHOLD\fP は 128 kB だが、 \fBmallopt\fP(3)  を使って調整できる。 \fBmmap\fP(2)
-を使って行われたメモリ割り当ては \fBRLIMIT_DATA\fP リソース上限の影響を受けない (\fBgetrlimit\fP(2)  参照)。
+を使って行われたメモリ割り当ては \fBRLIMIT_DATA\fP リソース上限の影響を受けない (\fBgetrlimit\fP(2)  参照)。
 
 マルチスレッドアプリケーションでのデータ破損を回避するため、内部では mutexを
-使用して、これらの関数で利用されるメモリ管理用のデータ構造を保護している。
-複数のスレッドが同時にメモリの確保や解放を行うようなマルチスレッドアプリケー
+使用して、これらの関数で利用されるメモリ管理用のデータ構造を保護している。
+è¤\87æ\95°ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8cå\90\8cæ\99\82ã\81«ã\83¡ã\83¢ã\83ªã\83¼ã\81®ç¢ºä¿\9dã\82\84解æ\94¾ã\82\92è¡\8cã\81\86ã\82\88ã\81\86ã\81ªã\83\9eã\83«ã\83\81ã\82¹ã\83¬ã\83\83ã\83\89ã\82¢ã\83\97ã\83ªã\82±ã\83¼
 ションでは、これらの mutex の衝突が起こり得る。マルチスレッドアプリケーション
-でのメモリ割り当て処理にスケーラビリティを持たせるために、glibc では mutex の
-衝突が検出された際には追加の \fIメモリ割り当て領域\fP を作成する。
+でのメモリ割り当て処理にスケーラビリティを持たせるために、glibc では mutex の
+衝突が検出された際には追加の \fIメモリ割り当て領域\fP を作成する。
 追加領域の各々は、(\fBbrk\fP(2) や \fBmmap\fP(2) を使って) システムにより内部的に
 割り当てられた大きな領域で、それぞれ独自の mutex により管理されている。
 
@@ -121,11 +131,9 @@ UNIX 98 標準では、 \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP() は実
 を設定しない場合には、失敗した際に \fIerrno\fP にエラーの理由を設定しないライブラリルーチンがあるかもしれない。
 .LP
 \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP(), \fBfree\fP()  における事故は、 ほとんどの場合はヒープの破壊
-(corruption) が原因である。 例えば、割り当てられた領域をオーバーフローする、 同じポインタに二度 free する、などがこれにあたる。
+(corruption) ã\81\8cå\8e\9få\9b ã\81§ã\81\82ã\82\8bã\80\82 ä¾\8bã\81\88ã\81°ã\80\81å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\81\9fé \98å\9f\9fã\82\92ã\82ªã\83¼ã\83\90ã\83¼ã\83\95ã\83­ã\83¼ã\81\99ã\82\8bã\80\81 å\90\8cã\81\98ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81«äº\8c度 free ã\81\99ã\82\8bã\80\81ã\81ªã\81©ã\81\8cã\81\93ã\82\8cã\81«ã\81\82ã\81\9fã\82\8bã\80\82
 .PP
-Linux libc の新しいバージョン (5.4.23 より後) と glibc (2.x) には、
-環境変数で動作を調整できる \fBmalloc\fP() 実装が含まれている。
-詳細は \fBmallopt\fP(3) を参照のこと。
+\fBmalloc\fP 実装は、環境変数で動作を調整できる。 詳細は \fBmallopt\fP(3) を参照のこと。
 .SH 関連項目
 .\" http://g.oswego.edu/dl/html/malloc.html
 .\" A Memory Allocator - by Doug Lea
@@ -143,6 +151,6 @@ Linux libc の新しいバージョン (5.4.23 より後) と glibc (2.x) には
 \fBmalloc_info\fP(3), \fBmalloc_trim\fP(3), \fBmalloc_usable_size\fP(3),
 \fBmallopt\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3), \fBposix_memalign\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。