Article View: japan.comp.lang.visual-c++
Article #6Re: $B%3%s%9%H%i%/%?Fb$rHr$1$k$Y$-=hM}(B
From: okahisa
Date: Tue, 09 May 2000 00:00
Date: Tue, 09 May 2000 00:00
83 lines
3319 bytes
3319 bytes
$B2,5W$G$9!#(B
<8f5cue$rjs$1@newsgw8.odn.ne.jp>$B$N5-;v$K$*$$$F(B
kiya@asahi.email.ne.jp$B$5$s$O=q$-$^$7$?!#(B
>> $B!!4pK\E*$K$O!"(Bnew $B$7$J$$$h$&$K$9$l$PLdBj$J$5$=$&$G$9!#$I$&$7(B
>> $B$F$b(B new $B$9$k$H$-$O!"%m!<%+%kJQ?t$H$7$F:n@.$7$?%*%V%8%'%/%H(B
>> $B$N%a%s%P!<$K%]%$%s%?!<$r$b$?$;$F%G%9%H%i%/%?!<$GGK4~$7$F$^$9!#(B
($BN,(B)
>> $B!!L@<(E*$K%3%s%9%H%i%/%?!<$r8F$VI,MW$,$"$k>lLL$K$ONI$/=P2q$$(B
>> $B$^$9!#0lHVB?$$$N$O!"(BCArray $B$J$I$N%F%s%W%l!<%H$r;H$&>l9g$G$9!#(B
>>
>> $B!!$"$H$O!"%/%i%9%$%s%9%?%s%9$NG[Ns$r!"%m!<%+%k%R!<%W>e$K<h$k(B
>> $B>l9g$J$I$O!"%a%b%j!<3NJ]$O!"(BAPI $B$K$J$j$^$9$N$G!"%3%s%9%H%i%/(B
>> $B%?!<$rL@<(E*$K8F$VI,MW$,$"$j$^$9!#(B
>>
>> void* pvoBuff = ::HeapAlloc( hHeap, 0, sizeof(CHoge)*ITEMS );
>> CHoge* p = (CHoge*)pvoBuff;
>> for ( int i = 0 ; i < ITEMS ; ++ i )
>> {
>> p->CHoge::CHoge( );
>> ++ p;
>> }
$B$d$C$Q$j!"G[NsHG(B auto_ptr $B$,M_$7$$$G$9$M!#(B
$B%G%U%)%k%H$N(B new $B0J30$+$i$N%a%b%j$r;H$C$F%*%V%8%'%/%H$r9=C[$9$k(B
$B$K$O(B placement new $B$,;H$($k$H;W$$$^$9!#(B
#include <iostream>
#include <vector>
#include <new>
#include <cstdlib>
using namespace std;
template <class T> class hitman
{
public:
hitman(const T& t) : target(&t) {}
~hitman() { target->~T(); }
private:
const T* target;
};
class CHoge
{
public:
CHoge() { cerr << "CHoge: Ogyaaa!!" << endl; }
~CHoge() { cerr << "CHoge: "Ugyaaa!!" << endl; }
};
int main()
{
const int N = 4;
void* p = malloc(N * sizeof(CHoge));
if (p) {
CHoge* vips = new(p) CHoge[N];
vector< hitman<CHoge> > request(vips, vips + N);
// peaceful time ...
}
return 0;
}
$B$R$g$C$H$7$?$i!"(B(STL $B$N(B)$B<BAu$K0MB8$7$F$$$k$+$b$7$l$^$;$s!#(B
$B$3$l0J30$K$b!"0z?t$J$7$N%3%s%9%H%i%/%?$,$[$H$s$I2?$b$7$J$$$+!"(B
$BESCf$G%G%9%H%i%/%?$r8F$s$G$bBg>fIW$J%*%V%8%'%/%H$NG[Ns$N:F=i4|(B
$B2=$O(B
for (int i = 0; i < N; i++) {
vips[i].~CHoge(); // $B>l9g$K$h$C$F$O>JN,2D$+$b(B
new(&vips[i]) CHoge(i);
}
$B$H$$$&$U$&$K$G$-$k$+$b$7$l$^$;$s!#(B
// $B<+J,$G(B CHoge $B$r=q$/$H$-$O!"%H%j%C%-!<$J$3$H$r$9$k$h$j=i4|2=(B
// $BMQ%a%s%P4X?t$r:n$k$N$,$h$$$H;W$$$^$9!#BeF~1i;;;R$O0l;~%*%V(B
// $B%8%'%/%H$r:n$C$F$O2u$9$N$G%$%d$+$b(B...
--
Email: okahisa@cs.ehime-u.ac.jp
Technical Details
Message-ID:
<8f95bs$vk9$1@csgw2.cs.ehime-u.ac.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<8evptd$4m2$2@newsgw8.odn.ne.jp> <8f0qal$jrh$1@nwms2.odn.ne.jp> <8f5cue$rjs$1@newsgw8.odn.ne.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: f71b3,d8108d20cf4aa80b X-Google-Attributes: gidf71b3,public X-Google-Thread: 10a2c7,d8108d20cf4aa80b X-Google-Attributes: gid10a2c7,public From: okahisa@cs.ehime-u.ac.jp Subject: Re: $B%3%s%9%H%i%/%?Fb$rHr$1$k$Y$-=hM}(B Date: 2000/05/09 Message-ID: <8f95bs$vk9$1@csgw2.cs.ehime-u.ac.jp> X-Deja-AN: 621125166 References: <8evptd$4m2$2@newsgw8.odn.ne.jp> <8f0qal$jrh$1@nwms2.odn.ne.jp> <8f5cue$rjs$1@newsgw8.odn.ne.jp> X-Complaints-To: usenet@cs.ehime-u.ac.jp X-Trace: csgw2.cs.ehime-u.ac.jp 957880508 32393 133.71.90.66 (9 May 2000 13:55:08 GMT) Organization: Dept.of Computer Science,Ehime University,Japan NNTP-Posting-Date: 9 May 2000 13:55:08 GMT Newsgroups: japan.comp.lang.visual-c++,fj.comp.lang.c++