From owner-FreeBSD-users-jp@jp.freebsd.org  Sat Nov  2 06:05:54 1996
Received: by jaz.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) id GAA20573
	Sat, 2 Nov 1996 06:05:54 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) with SMTP id GAA20568
	for <FreeBSD-users-jp@jp.freebsd.org>; Sat, 2 Nov 1996 06:05:51 +0900 (JST)
Received: by inetnif.niftyserve.or.jp (8.6.9+2.4W/3.3W8-950117-Mail-Gateway)
	id GAA00637; Sat, 2 Nov 1996 06:05:58 +0900
Message-Id: <199611012105.GAA00637@inetnif.niftyserve.or.jp>
Date: Sat, 02 Nov 1996 06:02:00 +0900
From: =?ISO-2022-JP?B?GyRCOF5IP0VEISE9KUknGyhC?= <NCA03530@niftyserve.or.jp>
To: FreeBSD-users-jp@jp.freebsd.org
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 5822
Subject: [FreeBSD-users-jp 5822] Re: Re: Re: Realloc
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

In-Reply-To: Your message of "Fri, 01 Nov 1996 12:08:10 +0900"
X-Mailer: Mew version 1.06 on Emacs 19.28.1, Mule 2.2
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp

$B8^H?ED$G$9!#(B

> $B1|;3!w#I#B#M$G$9!#(B
> $B;d$O!"8^H?ED$5$s$,<B:]$K7P83$7$?$N$O!"#4$N$h$&$J%?%$%W$N%P%0$G$O$J$$(B
> $B$+!"$HM=B,$7$F$$$k$N$G$9$,!"$$$+$,$G$9$+!)(B

$B$$$d$!!"$$$/$i$J$s$G$b!"$=$s$J4VH4$1$J$3$H$O!"$7$^$;$s$G$9!J(BT_T$B!K!#(B
$B!X(Bmalloc $B$G3NJ]$7$?!V%a%b%j%V%m%C%/!W$O!"$"$/$^$G!V%V%m%C%/!W$H$7$F07$&(B
$B$Y$-$G!"$^$?$=$&$;$M$P$J$i$J$$>l9g$,$"$k!Y$H$$$&$N$O!">o<1$@$H;W$C$F$$(B
$B$^$7$?!#(B
$B!J%]%$%s%?$HG[Ns$N4X78$b!"0l1~86M}E*$KM}2r$7$F$$$k$D$b$j$G$9!#!K(B

$B$3$l$G$b!"0l1~(B 10 $BG/6a$/(B C $B$r;H$C$F$$$k$s$G$9$+$i!D(B $B!J$"$^$j:,5r$K$J$i(B
$B$J$$$h$&$J5$$b$9$k$1$I!#!K(B
$B$H$j$"$($:!"(BZ80 $B$H(B 80x86 $B$H(B 68k $B$H(B H16 $B$H(B V60/70/80 $B$N5!3#8l$NCN<1$b$"(B
$B$k$D$b$j$G$9$7!D(B
$B!J$D$b$j$@$1$@$C$?$j$7$F(B(T_T)$B!#!K(B

> > $BLdBj$J$N$O!"!X(Brealloc $B4X?t$N%3!<%I$NCf$G!"85$N%V%m%C%/$r(B free $B$7$?(B $B!v(B
> > $B8e$G!v(B $B?7$?$J%V%m%C%/$r(B malloc $B$7D>$7!"$=$l$+$iFbMF$r%3%T!<$7$F$$$k$?(B
> > $B$a!"%3%T!<$5$l$kA0$K85$N%a%b%j%V%m%C%/$,:FMxMQ$5$l$F$7$^$C$F!J$$$k$H$7(B
> > $B$+;W$($J$$!K%3%T!<$5$l$?!J$D$^$j(B realloc $B$,JV$7$F$/$k%a%b%j%V%m%C%/$N!K(B
> > $BFbMF$,2=$1$F$7$^$C$F$$$k!YE@$J$N$G$9!#(B
> 
> $BB?J,2=$1$F$$$kM}M3$O$3$l$G$O$J$$$H$*$b$$$^$9!#(B
> $B0lEY(B free $B$9$k$N$O6K$a$FEv$?$jA0$N9M$($G!"ESCf$G<h$i$l$5$($7$J$1$l$P(B
> $B$$$$$N$G$9$+$i!#(B

$B3N$+$K!"!V0lC62rJ|$7$?8e!"==J,$KAa$/:F3NJ]!W$9$l$P!"2?$bLdBj$O$J$$$G$7$g(B
$B$&!#LdBj$O!"!V:FEY$N3NJ]$,!"==J,$KAa$$$+$I$&$+$O!"C/$bJ]>Z$7$F$/$l$J$$!W(B
$B$H$$$&$3$H$G$9!#(B

> $B#1!K(Bmalloc $B$r3d$j9~$_%k!<%A%s$G;H$C$F$$$k>l9g!'(B

$B$3$l$b!"$"$k0UL#$G!J$-$A$s$HBP=h$5$l$kJ]>Z$,$J$$>l9g!K$7$F$O$J$i$J$$$N(B
$B$O>o<1$@$H;W$$$^$9!#$A$J$_$K!":#2s$b(B signal handler $BCf$G$O$3$N$h$&$J$3(B
$B$H$O$7$F$$$^$;$s!#(B

> $B#2!K%^%k%A%9%l%C%I%k!<%A%s$N>l9g!'(B

FreeBSD $B$C$F!"$$$D$N4V$K$+(B thread $B$r%5%]!<%H$7$F$$$?$s$G$9$M!#$&!<$`!"(B
$BCN$i$J$+$C$?!D(B(^^;$B!#(B

>   malloc $B$O(B task $B4IM}5!9=$N0lIt$G$9$+$i!"(Brealloc $B$N$h$&$J(B critical
>   section $B$r;}$C$F$$$k$b$N$N>l9g$O!"$A$c$s$H4m81$J$H$3$m$G(B thread
>   switch $B$,H/@8$7$J$$$h$&$K%V%m%C%/$7$J$/$F$O$$$1$^$;$s!#(B

/usr/src/lib/libc/stdlib/malloc.c $B$r8+$k8B$j!"!J(Brealloc $B4X?tA4BN$r%+%P!<(B
$B$9$k$h$&$J!K(Block $B%3!<%I$O!"4^$^$l$F$$$^$;$s!#(B

> $B#3!K(Bmemmove $B$,4V0c$C$F$$$k!'(B
>   $BF0$+$9$H$3$m$^$G$O$$$$$N$G$9$,!"F0$+$9$H$-$K$O(B memmove $B$r;H$$$^$9!#(B
>   $B>e$NNc$N$h$&$K!VNN0h=EJ#!W$,$"$k$H$-$O(B memmove $B$r;H$&$N$,0lHLE*$G(B
>   $B$9$,!"$3$N4X?t$K%P%0$,$"$k$HEvA3FbMF$,2u$l$F$7$^$$$^$9!#(B

$B@N!"(BTurbo C $B$"$?$j$G$3$s$JLdBj$,$"$C$?$h$&$J!D(B
/usr/src/lib/libc/stdlib/malloc.c $B$N(B realloc $B$G$O!"(Bbcopy $B$r;H$C$F$$$^(B
$B$9!#(B

> $B#4!K(Brealloc $BBP>]$H$7$FAw$j$D$1$F$$$k%a%b%j%"%I%l%9$,4V0c$C$F$$$k!#(B
>   realloc $B$G$-$k$N$O(B malloc $B$G3NJ]$7$?NN0h$r!"!X(Bmalloc $B$G3NJ]$7$?$^(B
>   $B$5$K$=$N@hF,%"%I%l%9$+$i!Y$G$9!#(B

$B$3$l$b>o<1$G$9$M!#(B

>   chunk $B$OBgDq$N>l9g!"(B
>   (long *)(old - 4)
>   $B$H$$$&%"%I%l%9$K$=$N(B chunk $B$N%5%$%:$,3JG<$5$l$F$$$^$9!#(B

$B2{$+$7$$$G$9$M!<!#(BTurbo C $B$d(B Borland C++ $B$J$I$N!J<+A0$N%R!<%W4IM}%a%+(B
$B%K%:%`$r;}$C$F$$$k!K(BDOS $B>e$N=hM}7O$G$O!"(Bfar pointer $B$KJV$C$F$/$k%"%I%l(B
$B%9$N%*%U%;%C%H$,8+;v$K!V(B4$B!W$G!"$3$&$$$&=hM}$r$7$F$$$k$N$,%P%l%P%l$G$7(B
$B$?!#(B

$B$A$J$_$K!":#2s$N%3!<%I$,$I$N$h$&$J$b$N$@$C$?$+$H$$$&$H!"%a%b%j%V%m%C%/(B
$B$r$$$8$kItJ,$@$1$rH4?h$9$k$H!"(B

  struct foo *buffer, *ptr;
  int initial_size, final_size;

  /* $B$3$N4V$G(B initial_size $B$,==J,M>M5$N$"$kCM$K=i4|2=$5$l$k(B */

  buffer = malloc(sizeof(struct foo) * initial_size);

  /* buffer $B$K3JG<$5$l$k%G!<%?$rFI$_9~$_!"%G!<%?$N8D?t$r(B final_size $B$K(B
     $BF~$l$k!#%G!<%?$NAm?t$O!"(Binitial_size $B$G@)8B$5$l$k!#(B*/

  if (final_size < initial_size){
      if ((ptr = realloc(buffer, sizeof(struct foo) * final_size)) != NULL){
          buffer = ptr;
      }
  }

$B$H$$$&$h$&$J46$8$K$J$j$^$9!#(B
$B!J%(%i!<=hM}$O>JN,$7$F$"$j$^$9!#!K(B

$B$3$N$h$&$J%3!<%I$G!"(Brealloc $B$,JV$7$F$/$kNN0h$NCf?H$,!"(Brealloc $B0JA0$H0[(B
$B$J$C$F$$$k$N$G$9!#(B
$B!JB>$NItJ,$G$H$s$G$b$J$$NL$N%a%b%j$rMW5a$9$k$?$a!"$A$g$C$H$G$b%a%b%j$r(B
$B@aLs$7$h$&$H;W$C$?$s$G$9$,!"$3$s$J;vBV$K$J$C$F$7$^$$!"$b$H$b$H$=$s$J$K(B
$BBg$-$J%V%m%C%/$G$O$J$+$C$?$N$G!"(Brealloc $B$N=hM}<+BN$r30$7$F$7$^$$$^$7$?!#!K(B

$B@5D>8@$C$F!"$^$5$+$3$s$J$3$H$G%O%^$k$H$O!";W$$$^$;$s$G$7$?$h(B(T_T)$B!#(B

$B$"!"(Bmalloc $B$r(B calloc $B$K$7$F$b!">u67$OJQ$o$j$^$;$s$G$7$?!#(B
$B!JEv$?$jA0$G$9$,!#!K(B

                                   $B8^H?ED(B $B=)I'(B
                                   nca03530@niftyserve.or.jp
                                   gotanda@fs.cas.uec.ac.jp
                                         (forwarded to the above)
                                   a-gota@in.aix.or.jp
                                   gotasan@mix.or.jp
                                   cxn39733@pcvan.or.jp

