OSDN Git Service

Import translated manuals from JM CVS Repository.
[linuxjm/jm.git] / manual / LDP_man-pages / release / man3 / malloc_hook.3
1 .\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
2 .\" Distributed under GPL
3 .\" Heavily based on glibc documentation
4 .\" Polished, added docs, removed glibc doc bug, 2002-07-20, aeb
5 .\"
6 .\" FIXME
7 .\" According to a Fedora downstream patch, malloc hooks are deprecated
8 .\" https://bugzilla.redhat.com/show_bug.cgi?id=450187
9 .\" Integrate this upstream?
10 .\"
11 .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI all rights reserved.
12 .\" Translated Thu 05 Dec 2002 by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
13 .\"
14 .TH MALLOC_HOOK 3 2002-07-20 "GNU" "Linux Programmer's Manual"
15 .SH Ì¾Á°
16 __malloc_hook, __malloc_initialize_hook,
17 __memalign_hook, __free_hook, __realloc_hook,
18 __after_morecore_hook \- malloc ¥Ç¥Ð¥Ã¥°ÍѤÎÊÑ¿ô
19 .SH ½ñ¼°
20 .nf
21 .B "#include <malloc.h>"
22 .sp
23 .BI "void *(*__malloc_hook)(size_t " size ", const void *" caller );
24 .sp
25 .BI "void *(*__realloc_hook)(void *" ptr ", size_t " size \
26 ", const void *" caller );
27 .sp
28 .BI "void *(*__memalign_hook)(size_t " alignment ", size_t " size ,
29 .BI "                         const void *" caller );
30 .sp
31 .BI "void (*__free_hook)(void *" ptr ", const void *" caller );
32 .sp
33 .B "void (*__malloc_initialize_hook)(void);"
34 .sp
35 .B "void (*__after_morecore_hook)(void);"
36 .fi
37 .SH ÀâÌÀ
38 GNU C ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Å¬Àڤʥե寴ؿô (hook function) ¤ò»ØÄꤹ¤ë¤³¤È¤Ç
39 .BR malloc (3),
40 .BR realloc (3),
41 .BR free (3)
42 ¤ÎÆ°ºî¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£Î㤨¤Ð¡¢Æ°Åª¤Ë¥á¥â¥ê³ä¤êÅö¤Æ¤ò¹Ô¤¦
43 ¥×¥í¥°¥é¥à¤Î¥Ç¥Ð¥Ã¥°¤Ë¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£
44 .LP
45 ÊÑ¿ô
46 .B __malloc_initialize_hook
47 ¤Ï malloc ¤Î¼ÂÁõ¤¬½é´ü²½¤µ¤ì¤ëºÝ¤Ë°ìÅÙ¤À¤±¸Æ¤Ð¤ì¤ë´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
48 ¤³¤ÎÊÑ¿ô¤Ï½ñ¤­´¹¤¨²Äǽ (weak) ¤Ç¤¢¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥óÆâ¤Ç
49 °Ê²¼¤Î¤è¤¦¤ÊÄêµÁ¤Ç¾å½ñ¤­¤Ç¤­¤ë:
50
51 .nf
52     void (*__malloc_initialize_hook)(void) = my_init_hook;
53 .fi
54
55 ¤Ê¤ª¡¢´Ø¿ô
56 .IR my_init_hook ()
57 ¤ÇÁ´¤Æ¤Î¥Õ¥Ã¥¯¤Î½é´ü²½¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
58 .LP
59 .BR __malloc_hook ,
60 .BR __realloc_hook ,
61 .BR __memalign_hook ,
62 .B __free_hook
63 ¤Ç»Ø¤µ¤ì¤ë 4 ¤Ä¤Î´Ø¿ô¤Ï¡¢³Æ¡¹
64 .BR malloc (3),
65 .BR realloc (3),
66 .BR memalign (3),
67 .BR free (3)
68 ¤È¤è¤¯»÷¤¿¥×¥í¥È¥¿¥¤¥×¤ò»ý¤Ã¤Æ¤¤¤ë¤¬¡¢
69 °ìÈֺǸå¤Î°ú¤­¿ô
70 .I caller
71 ¤ò¤È¤ëÅÀ¤¬°Û¤Ê¤ë¡£
72 °ú¤­¿ô
73 .I caller
74 ¤Ë¤Ï¡¢
75 .BR malloc (3)
76 ¤Ê¤É¤Î¸Æ¤Ó½Ð¤·¸µ (caller) ¤Î¥¢¥É¥ì¥¹¤¬³ÊǼ¤µ¤ì¤ë¡£
77 .LP
78 ÊÑ¿ô
79 .B __after_morecore_hook
80 ¤Ï¡¢Îΰè¤ÎÄɲÃÍ׵᤬¤¢¤ê
81 .BR sbrk (2)
82 ¤¬¸Æ¤Ð¤ì¤¿¸å¤ÇËè²ó¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
83 .SH ½àµò
84 ¤³¤ì¤é¤Î´Ø¿ô¤Ï GNU ¤Ë¤è¤ë³ÈÄ¥¤Ç¤¢¤ë¡£
85 .SH Îã
86 ¤³¤ì¤é¤ÎÊÑ¿ô¤Î»È¤¤Êý¤Î´Êñ¤ÊÎã¤ò°Ê²¼¤Ë¼¨¤¹¡£
87 .sp
88 .nf
89 #include <stdio.h>
90 #include <malloc.h>
91
92 /* »È¤ª¤¦¤È¤¹¤ë¥Õ¥Ã¥¯¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À */
93 static void my_init_hook(void);
94 static void *my_malloc_hook(size_t, const void *);
95
96 /* ¸µ¡¹¤Î¥Õ¥Ã¥¯¤òÊݸ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô */
97 static void *(*old_malloc_hook)(size_t, const void *);
98
99 /* C ¥é¥¤¥Ö¥é¥ê¤«¤é¸Æ¤Ð¤ì¤ë½é´ü²½¥Õ¥Ã¥¯¤ò¾å½ñ¤­¤¹¤ë */
100 void (*__malloc_initialize_hook) (void) = my_init_hook;
101
102 static void
103 my_init_hook(void)
104 {
105     old_malloc_hook = __malloc_hook;
106     __malloc_hook = my_malloc_hook;
107 }
108
109 static void *
110 my_malloc_hook(size_t size, const void *caller)
111 {
112     void *result;
113
114     /* ¸µ¡¹¤Î¥Õ¥Ã¥¯¤òÁ´¤ÆÌ᤹ */
115     __malloc_hook = old_malloc_hook;
116
117     /* malloc ¤ÎºÆµ¢Åª¸Æ¤Ó½Ð¤· */
118     result = malloc(size);
119
120     /* ¸½ºßÀßÄꤵ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯ (underlying hook) ¤òÊݸ¤¹¤ë */
121     old_malloc_hook = __malloc_hook;
122
123     /* printf() ¤Ï malloc() ¤ò¸Æ¤Ó½Ð¤¹²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç
124         ¤³¤³¤Ç¤â¥¬¡¼¥É¤ò¹Ô¤¦ (¸µ¡¹¤Î¥Õ¥Ã¥¯¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯) */
125     printf("malloc(%u) called from %p returns %p\\n",
126             (unsigned int) size, caller, result);
127
128     /* ¥æ¡¼¥¶¤¬»È¤ª¤¦¤È¤¹¤ë¥Õ¥Ã¥¯¤òºÆÀßÄꤹ¤ë */
129     __malloc_hook = my_malloc_hook;
130
131     return result;
132 }
133 .fi
134 .SH ´ØÏ¢¹àÌÜ
135 .BR mallinfo (3),
136 .BR malloc (3),
137 .BR mcheck (3),
138 .BR mtrace (3)