////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    MF 2003/06/09(Mon) No.210
    zMF 3180 ( Mag2 + Pubzine )
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
    sF Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                QOORNUXij̍XV                  */
http://www.kab-studio.com/

EقƂ́[PbǉI
@Ol̃zbgn[uɂPbǉBݒB̉Ƃq߂܂B
[ Ol̃zbgn[u ]
http://www.kab-studio.com/Comic/HotHerb/

EăR~I
@ăR~ɓI܂I@jAE|SXuKAB-studiovłB
@Ƃ킯ŉăR~y[Wǉ܂B
@܂񏭂ȂǁijB
[ ăR~ ] 
http://www.kab-studio.biz/Info/Product/C64/


////////////////////////////////////////////////////////////////////
/*                        储ʂȓL                        */
http://www.kab-studio.com/nikki2/

2003/06/01 (Sun)
@T[o[eZB Apache  Tomcat ւ̘AgɎ
ԎBVcbR~VXeBuMUVOvByZBU͑O 
Java vWFNgɖ߂肻B

2003/06/02 (Mon)
@http Ȃ https ĂĂB MUVO tH[}bg
B

2003/06/03 (Tue)
@https  SSL B OpenSSL gݍ݂łA IE R|[lg
gƂɁBւŎԎB͐t@łB

2003/06/04 (Wed)
@ăR~܂BjiWPVjAE|SXuKAB-studiov
Bd IE ̂̑BȂƂłBAɉlĂς
ĂB\Q[ȂB

2003/06/05 (Thu)
@ubg VC6 ŃvOBUɂd̘bBăR~
BقƂ́[O` KAB-studio.rom B̂͂ЂƂڂB
Ɩ^x`}[NB

2003/06/06 (Fri)
@OŃQ[ByPƂB Tomcat ĂBsB 
CD ʐYphCuB MFC ̃\[XB

2003/06/07 (Sat)
@_rOBقƂ́[͌\肬Ber͂mXy
ƒɂccBă}_fLB


////////////////////////////////////////////////////////////////////
/*                         A                             */
http://www.kab-studio.com/Novel/Fuga/

@掵́@@|PP|

w͂܂ᒆɂȂI@ɂ́AȋC͂Ȃ񂾁x
@΂炭̒فBāA̐B
wȂƌȂccx
@ƁA炭䍁񂪘bĂccāA̘bɎ̖O
oĂccB
wmɁÂ͕ƌȂB͋̕CA̐iccmɁA
Ă݂΂ȁx
@AȂB
@ɂ́AꂪƂĂȂےIȕ]ɕB
wɁccDĂĂ̂킩x
@H
@H@HH@HHHHH
@̂ƍDccCÂĂH@Ƃccmɋq
͌A䍁񂪕Ă\͂AǁccB
@΂ލ肵߂BSAۓ𑁂߂ĂȂ̂ɁAɂB
włx
@̌ۓA~܂B
wccTONȏoĂ񂾁B́ccSA񂾂ΐHĂB
ȂA܂Ɓx
@Ōt؂BāB
wȂƌȂIx
@̒ʂ鐺́AڕĂȂقǁAB
wmɁA܂ɂ͓̂ȂAɂ͓̂B͂Ƃ
Błcc̐S͂ႭȂ񂾁BɁccx
@̕\́Aނ뉸₩ɁAނĂB
w܂ŗ炱A̗͂}߂Ă񂾁B܂݂̂
ɁccElSɂ͖߂肽Ȃx
@ElSB
@̋L҂ĂbB
uȂccA܂łɉlEĂHv
@킸ȒفB
uAȂɁccv
@͉EɎBΒɎh{́AՂゾΖ
oĂB㌀RƂĂȂ~߂̎{ꂽ́AƂ
Ă݂̓FĂB
@v`Ă̂A͂̓ƌߑĂB
                                                              ()


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
w\ǎ牽cƂ́ccx
uՂƂ킪邯ǁv
wՂƂ킾ˁx
uhv
wăR~֌WĂSRoԂȂx
uhv
wȂ񂩂܂ȁ[x
uԂ񍡂͂ƁA̎Ȃ񂾂v
wzgɁ[Hx
uԂccv
http://www.kab-studio.com/
_______________________________________________________________[KCM]


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

@Version 11.10
낢날郁mۂ̕@

uO malloc() gămۂǁAۂɂ͂낢ȕ
@܂v

E^Ci malloc() / free() j
@FrIȒPɎgBႪB
@ZFɂȂB
E API i GlobalAlloc() 낢 j
@FׂłBȎgłB
@ZFĝʓ|B
E C++ ̋@\i new / delete j
@FRXgN^/fXgN^ĂׂBLɎgB
@ZF\ϐЂƂƔzňႤB C ł͎gȂB

wققx
uŁAƂŐ邯ǁAۂɂ͍Ō C++ ̂gȂႢ
łv
wցH@Ⴀ malloc() ̂͊ԈႢȂ́HHx
uA͂ŐBA malloc() gȂꍇ
āȀꍇɂ C++  new  delete gɂȂ邩AȂv
wS new  delete ɂHx
uĂbɂȂ邩ˁBA malloc() ͎g₷A킩₷
AʂȂv
wĂƂ́A͂ƕGȂ񂾁x
u܂ˁB܂A API ɂČĂv

void UseGlobalAlloc()
{
    // ̃f[^̈mۂ܂B
    const char *const DATA = "";

    // ܂nh擾B
    HGLOBAL hGlobal
         = GlobalAlloc( GMEM_MOVEABLE, strlen( DATA ) + 1 );
    // ɃmہB
    char *pch = (char *)GlobalLock( hGlobal );

    // Rs[ĂóB
    strcpy( pch, DATA );
    TRACE( "%s\n", pch );

    // ܂B
    GlobalFree( pch );
}

w malloc() ƓccȂ񂾂ˁBȂ񂩂QiKɂȂĂx
uA API ŃmۂƂɂ͂ӂ̃Xebv𓥂ޕKv
܂B܂A|C^𑀍삷邽߂̃nh擾܂v

    // ܂nh擾B
    HGLOBAL hGlobal
         = GlobalAlloc( GMEM_MOVEABLE, strlen( DATA ) + 1 );

wnhāAEBhEnhƂƓnhHx
uÁBEBhEYVXeǗĂ邩v
w悤ɑ삷̂̓nhoRĂƂˁx
unh擾A͂̃nhgămۂ܂v

    // ɃmہB
    char *pch = (char *)GlobalLock( hGlobal );

w malloc() Ɠˁx
u̎̃̕Rs[B|C^ƂĎ擾Ⴆ΂
̃|C^ƂĎg邩v
wŁx

    // ܂B
    GlobalFree( pch );

wŉˁB free() Ɠˁx
uA{Iɂ̓^CgꍇƓBɎ́A 
malloc() Ƃ܂悤ɂ擾łłv
wցHx

void UseGlobalAllocFixed()
{
    // ̃f[^̈mۂ܂B
    const char *const DATA = "";

    // ڃmہB
    char *pch
        = (char *)GlobalAlloc( GMEM_FIXED, strlen( DATA ) + 1 );

    // Rs[ĂóB
    strcpy( pch, DATA );
    TRACE( "%s\n", pch );

    // ܂B
    GlobalFree( pch );
}

wzgA GlobalAlloc() Ȃ̂ɒڃ|C^ĂĂx
uP GMEM_FIXED nƂȂ܂v
włȂłŏɂȂ́H@Ȃzg malloc() 
Ɠx
uAȒPȂ̂͂Ǝv񂾂ǁA GlobalAlloc() ̖߂l
HGLOBAL A|C^Ƃ͂ƈႤ񂾂ˁB HGLOBAL 
擾@̕A@ȁAĎvāv
w GlobalAlloc()  HGLOBAL Ԃ̂ڂĂƂˁx
uƁBŁA֌W API ͎͂ꂾȂłv
w܂́Hx
u VirtualAlloc()  VirtualFree() Ă API āA͂
Ȃ蕡Głv

void UseVirtualAlloc()
{
    // ̃f[^̈mۂ܂B
    const char *const DATA = "";

    // mہB
    char *pch
        = (char *)VirtualAlloc
                ( 0
                , strlen( DATA ) + 1 
                , MEM_COMMIT
                , PAGE_EXECUTE_READWRITE
                );

    // Rs[ĂóB
    strcpy( pch, DATA );
    TRACE( "%s\n", pch );

    // ܂B
    VirtualFree
        ( pch
        , 0
        , MEM_RELEASE
        );
}

wAȂ蕡GIx
u͓gȂׂ͂ȂǁAPɃm
񂶂ȂāȀꏊƂw肵čׂ擾ł
v
wց[x
uɁÅ֐Ŏ擾̈́ÃvZXANZXł
ɂłłv
wccĂƂ͑珑ꂿႤ񂶂HH@Ă܂
ȂHx
ũvO͌ȂvBmۂĂÃ|
C^͂킩ȂłHv
w΁ccx
uŁAANZXł邩AtɂgƑ̃vZXɂAN
ZXłłv
wA̕܂ccx
u܂ˁccgƁAƂΑ̃Aṽ_CAOɒt
c[Rg[擾ł܂v
w͂Ɩʔx
uۂɂ͂Ȏĝ߂ɂgȂƎvAƂ肠
͖YĂv
ẃ[x
uŁA API ɂ͂܂ HeapAlloc()  HeapFree() Ă̂܂v
wI@܂񂾁x
u܂ڂ͎gȂAł͐܂v
wځHx
uAmیn API gŏdvȂƂӂ
āA܂ЂƂ́Ȃ OS ̑삾Aǂ API g
ƂɂȂ܂v
wǁHx
u malloc()  API gĂĂƁv
wI@ˁAt@Cmˁx
u Version 5.18 ( No.083 ) ŌˁB malloc() / free()  API  
HeapAlloc() / HeapFree() gĂ܂v
wꂪԐړIɎgĂĂƂȂ̂ˁx
u^Cǂ API gĂĂ̂͏dvȂƂA
CɂƂ߂ĂĂˁBŁAЂƂ̏dvȂƁB̕d
vȂƂȂ񂾂ǁv
wx
úAe API ɂ͌݊܂v
wցHx
uƂ΁A VirtualAlloc() Ŋmۂ|C^ GlobalFree() ŉ
悤ƂƁv

void UseVirtualAllocAndGlobalFree()
{
    // ̃f[^̈mۂ܂B
    const char *const DATA = "";

    // mہB
    char *pch
        = (char *)VirtualAlloc
                ( 0
                , strlen( DATA ) + 1 
                , MEM_COMMIT
                , PAGE_EXECUTE_READWRITE
                );

    // Rs[ĂóB
    strcpy( pch, DATA );
    TRACE( "%s\n", pch );

    // ccł܂B
    GlobalFree( pch );
}

wAȂ񂩏oIx

O ()  StringTest.exe (NTDLL.DLL) ɂ܂: 
0xC0000005: Access ViolationB

úA VirtualAlloc() Ŋmۂ|C^́A GlobalFree() ŃAN
ZXłȂĂƁBƂAԂ񒆂ɏ񂪂Ȃ񂶂Ȃȁv
wHx
úA|C^Amۂ̈̃TCY킩Ȃłv
w GlobalAlloc() ƂŊmۂTCY킩ȂHx
uBA GlobalAlloc() Ƃ VirtualAlloc() ɁÃ|
C^ƈꏏɊmۂTCYĂ񂾂ǁȀ 
GlobalAlloc()  VirtualAlloc() Ƃł͕ʂv
wǂ̃TCY΂̂킩ȂAƁx
uƂ킯ŁA͊mۂ֐Ɖ֐̓ZbgɂȂႢ
ȂłBƂ킯ŎɑIv

/*
    Preview Next Story!
*/
ŵAq̃Aṽc[Rg[rĂx
u VirtualAlloc() ĝˁv
ŵ̂͋ĂȂ́Hx
û܂ŋn߂Ƃ肪Ȃccv
włAƂĂ݂x
û͌΂݂Ǝvv
wĂƂˁx
uƂ킯Ŏv
 Version 11.11 RXgN^ƃfXgN^ 
wɂÂIx
uŁAl͂ǂȃTCgĂł{Zp邩v
wŏIIɂ͂̕Hx
uv


////////////////////////////////////////////////////////////////////
/*                QOORNUPUij̍XV                */
http://www.kab-studio.com/

EقƂ́[Pbǉ\
@Ol̃zbgn[uɈÂPbǉ\łB

EKAB-studio.h kōXV
@KAB-studio.h QPOɂȂ̂ŏkłXV܂BĂ[{
͐Tɂ͂ǉăR~D悵Ă܂܂A
ȂB͑vłB


////////////////////////////////////////////////////////////////////
/*                          ӁII                            */

Ẽ[ԐMȂłB
EӌE]Ez[`[ʂȓL]肨肭B
http://www.kab-studio.com/nikki2/
EwǓo^Ƃɂ͂̃y[WōsȂĂB
http://www.mag2.com/m/0000012198.htm
http://www.pubzine.com/detail.asp?id=000590
E͎ōsȂĂB
EobNio[͂̃y[Wɂ܂B
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.com/Info/MailMagazine/

    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////

