OSDN Git Service

(split) LDP: Translate some pages
[linuxjm/LDP_man-pages.git] / draft / man3 / malloc_hook.3
index e066dc4..8188d47 100644 (file)
 .\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
 .\" Distributed under GPL
+.\" %%%LICENSE_END
+.\"
 .\" Heavily based on glibc documentation
 .\" Polished, added docs, removed glibc doc bug, 2002-07-20, aeb
 .\"
-.\" FIXME
-.\" According to a Fedora downstream patch, malloc hooks are deprecated
-.\" https://bugzilla.redhat.com/show_bug.cgi?id=450187
-.\" Integrate this upstream?
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI all rights reserved.
-.\" Translated Thu 05 Dec 2002 by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH MALLOC_HOOK 3 2002-07-20 "GNU" "Linux Programmer's Manual"
-.\"O .SH NAME
-.SH Ì¾Á°
-.\"O __malloc_hook, __malloc_initialize_hook,
-.\"O __memalign_hook, __free_hook, __realloc_hook,
-.\"O __after_morecore_hook \- malloc debugging variables
-__malloc_hook, __malloc_initialize_hook,
-__memalign_hook, __free_hook, __realloc_hook,
-__after_morecore_hook \- malloc ¥Ç¥Ð¥Ã¥°ÍѤÎÊÑ¿ô
-.\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.\"*******************************************************************
+.TH MALLOC_HOOK 3 2010\-10\-13 GNU "Linux Programmer's Manual"
+.SH 名前
+__malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook,
+__realloc_hook, __after_morecore_hook \- malloc デバッグ用の変数
+.SH 書式
 .nf
-.B "#include <malloc.h>"
+\fB#include <malloc.h>\fP
 .sp
-.BI "void *(*__malloc_hook)(size_t " size ", const void *" caller );
+\fBvoid *(*__malloc_hook)(size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP
 .sp
-.BI "void *(*__realloc_hook)(void *" ptr ", size_t " size \
-", const void *" caller );
+\fBvoid *(*__realloc_hook)(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP
 .sp
-.BI "void *(*__memalign_hook)(size_t " alignment ", size_t " size ,
-.BI "                         const void *" caller );
+\fBvoid *(*__memalign_hook)(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB,\fP
+\fB                         const void *\fP\fIcaller\fP\fB);\fP
 .sp
-.BI "void (*__free_hook)(void *" ptr ", const void *" caller );
+\fBvoid (*__free_hook)(void *\fP\fIptr\fP\fB, const void *\fP\fIcaller\fP\fB);\fP
 .sp
-.B "void (*__malloc_initialize_hook)(void);"
+\fBvoid (*__malloc_initialize_hook)(void);\fP
 .sp
-.B "void (*__after_morecore_hook)(void);"
+\fBvoid (*__after_morecore_hook)(void);\fP
 .fi
-.\"O .SH DESCRIPTION
-.SH ÀâÌÀ
-.\"O The GNU C library lets you modify the behavior of
-.\"O .BR malloc (3),
-.\"O .BR realloc (3),
-.\"O and
-.\"O .BR free (3)
-.\"O by specifying appropriate hook functions.
-.\"O You can use these hooks
-.\"O to help you debug programs that use dynamic memory allocation,
-.\"O for example.
-GNU C ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Å¬Àڤʥե寴ؿô (hook function) ¤ò»ØÄꤹ¤ë¤³¤È¤Ç
-.BR malloc (3),
-.BR realloc (3),
-.BR free (3)
-¤ÎÆ°ºî¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£Î㤨¤Ð¡¢Æ°Åª¤Ë¥á¥â¥ê³ä¤êÅö¤Æ¤ò¹Ô¤¦
-¥×¥í¥°¥é¥à¤Î¥Ç¥Ð¥Ã¥°¤Ë¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£
+.SH 説明
+GNU C ライブラリでは、適切なフック関数 (hook function) を指定することで \fBmalloc\fP(3), \fBrealloc\fP(3),
+\fBfree\fP(3)  の動作を変更することができる。例えば、動的にメモリ割り当てを行う プログラムのデバッグにこれらのフックを使うことができる。
 .LP
-.\"O The variable
-.\"O .B __malloc_initialize_hook
-.\"O points at a function that is called once when the malloc implementation
-.\"O is initialized.
-.\"O This is a weak variable, so it can be overridden in
-.\"O the application with a definition like the following:
-ÊÑ¿ô
-.B __malloc_initialize_hook
-¤Ï malloc ¤Î¼ÂÁõ¤¬½é´ü²½¤µ¤ì¤ëºÝ¤Ë°ìÅÙ¤À¤±¸Æ¤Ð¤ì¤ë´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
-¤³¤ÎÊÑ¿ô¤Ï½ñ¤­´¹¤¨²Äǽ (weak) ¤Ç¤¢¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥óÆâ¤Ç
-°Ê²¼¤Î¤è¤¦¤ÊÄêµÁ¤Ç¾å½ñ¤­¤Ç¤­¤ë:
-
+変数 \fB__malloc_initialize_hook\fP は malloc の実装が初期化される際に一度だけ呼ばれる関数へのポインタである。
+この変数は書き換え可能 (weak) であり、アプリケーション内で 以下のような定義で上書きできる:
 .nf
+
     void (*__malloc_initialize_hook)(void) = my_init_hook;
-.fi
 
-.\"O Now the function
-.\"O .IR my_init_hook ()
-.\"O can do the initialization of all hooks.
-¤Ê¤ª¡¢´Ø¿ô
-.IR my_init_hook ()
-¤ÇÁ´¤Æ¤Î¥Õ¥Ã¥¯¤Î½é´ü²½¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
+.fi
+なお、関数 \fImy_init_hook\fP()  で全てのフックの初期化をすることができる。
 .LP
-.\"O The four functions pointed to by
-.\"O .BR __malloc_hook ,
-.\"O .BR __realloc_hook ,
-.\"O .BR __memalign_hook ,
-.\"O .B __free_hook
-.\"O have a prototype like the functions
-.\"O .BR malloc (3),
-.\"O .BR realloc (3),
-.\"O .BR memalign (3),
-.\"O .BR free (3),
-.\"O respectively, except that they have a final argument
-.\"O .I caller
-.\"O that gives the address of the caller of
-.\"O .BR malloc (3),
-.\"O etc.
-.BR __malloc_hook ,
-.BR __realloc_hook ,
-.BR __memalign_hook ,
-.B __free_hook
-¤Ç»Ø¤µ¤ì¤ë 4 ¤Ä¤Î´Ø¿ô¤Ï¡¢³Æ¡¹
-.BR malloc (3),
-.BR realloc (3),
-.BR memalign (3),
-.BR free (3)
-¤È¤è¤¯»÷¤¿¥×¥í¥È¥¿¥¤¥×¤ò»ý¤Ã¤Æ¤¤¤ë¤¬¡¢
-°ìÈֺǸå¤Î°ú¤­¿ô
-.I caller
-¤ò¤È¤ëÅÀ¤¬°Û¤Ê¤ë¡£
-°ú¤­¿ô
-.I caller
-¤Ë¤Ï¡¢
-.BR malloc (3)
-¤Ê¤É¤Î¸Æ¤Ó½Ð¤·¸µ (caller) ¤Î¥¢¥É¥ì¥¹¤¬³ÊǼ¤µ¤ì¤ë¡£
+\fB__malloc_hook\fP, \fB__realloc_hook\fP, \fB__memalign_hook\fP, \fB__free_hook\fP
+で指される 4 つの関数は、各々 \fBmalloc\fP(3), \fBrealloc\fP(3), \fBmemalign\fP(3), \fBfree\fP(3)
+とよく似たプロトタイプを持っているが、 一番最後の引き数 \fIcaller\fP をとる点が異なる。 引き数 \fIcaller\fP には、
+\fBmalloc\fP(3)  などの呼び出し元 (caller) のアドレスが格納される。
 .LP
-.\"O The variable
-.\"O .B __after_morecore_hook
-.\"O points at a function that is called each time after
-.\"O .BR sbrk (2)
-.\"O was asked for more memory.
-ÊÑ¿ô
-.B __after_morecore_hook
-¤Ï¡¢Îΰè¤ÎÄɲÃÍ׵᤬¤¢¤ê
-.BR sbrk (2)
-¤¬¸Æ¤Ð¤ì¤¿¸å¤ÇËè²ó¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
-.\"O .SH "CONFORMING TO"
-.SH ½àµò
-.\"O These functions are GNU extensions.
-¤³¤ì¤é¤Î´Ø¿ô¤Ï GNU ¤Ë¤è¤ë³ÈÄ¥¤Ç¤¢¤ë¡£
-.\"O .SH "EXAMPLE"
-.SH Îã
-.\"O Here is a short example of how to use these variables.
-¤³¤ì¤é¤ÎÊÑ¿ô¤Î»È¤¤Êý¤Î´Êñ¤ÊÎã¤ò°Ê²¼¤Ë¼¨¤¹¡£
+変数 \fB__after_morecore_hook\fP は、領域の追加要求があり \fBsbrk\fP(2)
+が呼ばれた後で毎回呼び出される関数へのポインタである。
+.SH 準拠
+これらの関数は GNU による拡張である。
+.SH 注意
+.\" https://bugzilla.redhat.com/show_bug.cgi?id=450187
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=9957
+マルチスレッドプログラムでは、 これらのフック関数の使用は安全ではなく、 今では非推奨である。 プログラマは、 "malloc" や "free"
+のような関数を定義して公開して、 関連する関数を呼び出すようにすべきである。
+.SH 例
+これらの変数の使い方の簡単な例を以下に示す。
 .sp
 .nf
 #include <stdio.h>
 #include <malloc.h>
 
-.\"O /* Prototypes for our hooks.  */
-/* »È¤ª¤¦¤È¤¹¤ë¥Õ¥Ã¥¯¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À */
+/* 使おうとするフックのプロトタイプ宣言 */
 static void my_init_hook(void);
 static void *my_malloc_hook(size_t, const void *);
 
-.\"O /* Variables to save original hooks. */
-/* ¸µ¡¹¤Î¥Õ¥Ã¥¯¤òÊݸ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô */
+/* 元々のフックを保存するための変数 */
 static void *(*old_malloc_hook)(size_t, const void *);
 
-.\"O /* Override initializing hook from the C library. */
-/* C ¥é¥¤¥Ö¥é¥ê¤«¤é¸Æ¤Ð¤ì¤ë½é´ü²½¥Õ¥Ã¥¯¤ò¾å½ñ¤­¤¹¤ë */
+/* C ライブラリから呼ばれる初期化フックを上書きする */
 void (*__malloc_initialize_hook) (void) = my_init_hook;
 
 static void
@@ -162,34 +89,29 @@ my_malloc_hook(size_t size, const void *caller)
 {
     void *result;
 
-.\"O    /* Restore all old hooks */
-    /* ¸µ¡¹¤Î¥Õ¥Ã¥¯¤òÁ´¤ÆÌ᤹ */
+    /* 元々のフックを全て戻す */
     __malloc_hook = old_malloc_hook;
 
-.\"O    /* Call recursively */
-    /* malloc ¤ÎºÆµ¢Åª¸Æ¤Ó½Ð¤· */
+    /* malloc の再帰的呼び出し */
     result = malloc(size);
 
-.\"O    /* Save underlying hooks */
-    /* ¸½ºßÀßÄꤵ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯ (underlying hook) ¤òÊݸ¤¹¤ë */
+    /* 現在設定されているフック (underlying hook) を保存する */
     old_malloc_hook = __malloc_hook;
 
-.\"O    /* printf() might call malloc(), so protect it too. */
-    /* printf() ¤Ï malloc() ¤ò¸Æ¤Ó½Ð¤¹²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç
-        ¤³¤³¤Ç¤â¥¬¡¼¥É¤ò¹Ô¤¦ (¸µ¡¹¤Î¥Õ¥Ã¥¯¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯) */
-    printf("malloc(%u) called from %p returns %p\\n",
+    /* printf() は malloc() を呼び出す可能性があるので
+        ここでもガードを行う (元々のフックのままにしておく) */
+    printf("malloc(%u) called from %p returns %p\en",
             (unsigned int) size, caller, result);
 
-.\"O    /* Restore our own hooks */
-    /* ¥æ¡¼¥¶¤¬»È¤ª¤¦¤È¤¹¤ë¥Õ¥Ã¥¯¤òºÆÀßÄꤹ¤ë */
+    /* ユーザが使おうとするフックを再設定する */
     __malloc_hook = my_malloc_hook;
 
     return result;
 }
 .fi
-.\"O .SH "SEE ALSO"
-.SH ´ØÏ¢¹àÌÜ
-.BR mallinfo (3),
-.BR malloc (3),
-.BR mcheck (3),
-.BR mtrace (3)
+.SH 関連項目
+\fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。