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

    KAB-studio.h


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

    MF 2003/07/07(Mon) No.214
    zMF 3040 ( Mag2 + Pubzine )
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
    sF Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

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

EقƂ́[PbǉI
@Ol̃zbgn[uɂPbǉBÂnIVIłB
[ Ol̃zbgn[u ]
http://www.kab-studio.com/Comic/HotHerb/


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

2003/06/29 (Sun)
@قƂ́[ăR~łQbƂƁB̓oW̐pBقƂ́[{
҂͋vXnIVIB܂^掸sĂccB

2003/06/30 (Mon)
@eXgdlBlBقƂ́[ăR~łƖ{҂BăR
~ŁA܂Wy[WccB KAB-studio.ROM ̃_E[h̔AxN^[
ɂH@VPłԃX^WNBꂩ̂PN͑傫ω邩
B

2003/07/01 (Tue)
@eXgn߂oOςB Struts Tastcase for JUnit 
݂BAĂقƂ́[ăR~łƖ{҂BăvI@EƂق
́[I@EB

2003/07/02 (Wed)
@eXgЂAoOЂB΃pXł΃pXłA \ ł / 
łpX@B File#getCanonicalFile() BŃ_CGb
gBăf[^x[XƂd̓eBugbNio[vB

2003/07/03 (Thu)
@OɍvOoOĂBStruts TestCase for JUnit ̓C
M[ȃf[^ȒPɎ̂BlŃobOƂwB|
sB݂Ȃ̂uΊvB̃ANZXB VB I
f[^x[XANZXB

2003/07/04 (Fri)
@oO܂oOB Java  exe ꂽȂBub
NXŔ@҃NP񂪑qbgBȂoJBӂ̗\
B

2003/07/05 (Sat)
@قƂ́[ăR~łPy[WƂB_CH@~R~͂
Ƒ炵悤B~Ń|IBubNX̃|C
gJ[hƋ₾̃|CgJ[hB


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

@攪́@ƕɁ@|Q|

@Ki肽ƂɁAւƐLтʘHBllƒʂ
ʘH̘eXƌ鉊BB
u{Ȃccv
u͂́Ȃ݂ȎĂ邩ȁv
@ɂ͂ȂĂȂA炭邱Ƃ̂ł鉊Ɠ
̂Ȃ̂낤B
@ʘH𔲂ƁALȋԂBƂX͂ށAa
TO[gقǂ̋ԁB
uIIccv
@ccƌĂł̂ÂقڂׂĂ߂~`̌AR
ĂB
uccHv
uGłȂB̉΂͐lIԁv
@B鉊̒VkB
uvԂłAԗtlv
@VVɂ킹ĕB
uȂ́Hv
uɂcci̎҂𖱂߂AƂ܂v
u͏ԗtíjB̑̒Ăv
@ĎɌB
u͂Ȃ̗pv
u̐̏AȂHv
ûv
uPNccȂAZ낤ǁA͂܂炵B
~߂邽߂ɂ͂S̗̐͂Kvv
@^ɐA𗎂Ď󂯎~߂ԗtB
@AԗtĺAȂ񂩕svcȊccЌAȂA
Ŝł镵͋CAƂĎXȂccB
uɂmF˂΂Ȃ񂪁A炭͂܂B͉̑E
uĂ邩ȁBv
@ԗt͂ƐUAĂщ̒ւƓB悭ƁA̒
ɂ͓ĂāȀĂBɕĂ킯ł͂Ȃ
B
@AԒɓĂĺA͂ٔ\Ȃ̂B
ucc̕pAɂ򂪂̂͂ł낤v
uccAccv
@ԗtwpǍ͕̋Aɂ̂pB
uƁA̕pƂ̕pcc炭́A炪nA炪
ł낤v
@ĂӂAwB
uɎ͂AʂĊ邱ƂłB炭ꂪ
̐ł낤v
                                                              ()


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
wTŁAăR~POĂƂˁx
u낻`n߂v
wˁBς܂ KAB-studio.ROM Hx
u̓ǎ҂񂾂ƂȂˁv
w܂AĂȂȂ́Hx
uvOς CD-R BꖇPQOO~v
wIx
uȁAvO~On̖{āv
wAmɂ͐~xǁccx
uR[hpIAʂ邩v
wPQOO~͈Hx
uƎvccv
wŁAéHx
u͗TIv
http://www.kab-studio.com/
_______________________________________________________________[KCM]


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

@Version 11.14
mۂƃfobO[h

úAOGꂽ _malloc_dbg() ɂĉ܂v
w malloc() ̃fobO[hłˁx
uꉞƂɂȂ邩ȁv
wA malloc() ĂłĂAfobO[h _malloc_dbg() Ă
邩x
umɂ͂ƈႤĂƂɂȂˁBA܂͎gĂ݂悤v

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

    // ܂mہB
    char *pch
        = (char *)_malloc_dbg
            ( strlen( DATA ) + 1 
            , _NORMAL_BLOCK
            , __FILE__
            , __LINE__
            );

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

    // ܂B
    _free_dbg( pch, _NORMAL_BLOCK );
}

wʂ malloc() ˁx
u malloc() @\ˁBЂƂЂƂĂv

    char *pch
        = (char *)_malloc_dbg
            ( strlen( DATA ) + 1 
            , _NORMAL_BLOCK
            , __FILE__
            , __LINE__
            );

wPԖڂ̈͂Ȃ݂̃TCYˁBQԖڂ _NORMAL_BLOCK ́Hx
uǂ̃̕mۂ邩w肷tOˁB͂ƂŌĂ 
_free_dbg() ƓꂵĂΑvȁv
wA free() p̂Ȃ񂾂ˁx
uRƑS̓}NB C++ ꂻ̂̂Ă
ȃ}NŁA __FILE__ ̓t@CA __LINE__ ͍sԍɒu
v
wHHHx
uȒPɎĂ݂悤v

void Use_FILE_LINE()
{
    TRACE( "%s\n", __FILE__ );
    // C:\Program\StringTest\StringTestDlg.cpp
    TRACE( "%d\n", __LINE__ );
    // 122
}

ů֐̒uꏊ StringTestDlg.cpp  118 sڂȂ炱Ȃӂ
Ȃ͂v
w[ccx
u܂ARpCƂɃvO̒ __FILE__  __LINE__ 
v

    TRACE( "%s\n", "C:\Program\StringTest\StringTestDlg.cpp" );
    // C:\Program\StringTest\StringTestDlg.cpp
    TRACE( "%d\n", 122 );
    // 122

uɒuāAꂩRpCłv
wAA}Nu񂾁Bꂪccx
u __FILE__  __FILE__ Ăt@C̃tpXA 
__LINE__  __LINE__ Ăs̍sɒuĂ
Ɓv
ŵu񂾁BłAꂪɎǵHx
uƂ΁A Use_malloc_dbg() ŁA _free_dbg() ̍sR
gAEgĂ݂āv
wȂƂ烁[N񂶂ȂHx
u킴ƂẮ݂v
w[Bقx

Detected memory leaks!
Dumping objects ->
C:\Program\StringTest\StringTestDlg.cpp(127) : 
{68} normal block at 0x00421690, 11 bytes long.
 Data: <           > 82 A0 82 A2 82 A4 82 A6 82 A8 00 
Object dump complete.

wI@pXƍsԍIx
uAŏo͂邽߂ɓnĂłv
wA΂ǂŃ[N킩񂾁Ix
u __FILE__  __LINE__ ͕ʂɃvO̒Ŏg邩A֗
ȂǂǂgĂv
wH@ malloc() gāccx
ûƂɂ͎Iɂ̂ӂnĂ邩v
wĂƂ́AʂɎgĂĂ̏͏o񂾁x
uƁB __FILE__  __LINE__ nĂς
ˁBŁA _malloc_dbg() ɂ̓fobOpɗlXȋ@\Ă܂v
w̃[N킩̂ˁx
uB Version 11.09 ( No.209 ) QƂĂƂŁBłA
ɂfobOp̋@\łB _malloc_dbg() ŎĂAh
X𒼐ڌĂ݂āv
wقBu[N|CgŎ~߂āAAhXāAEBhEŕ\
Ɓx
uEBhEƁAӂɂȂĂƎv܂v

                                                        FD FD FD FD
CD CD CD CD CD CD CD CD CD CD CD FD FD FD FD 
ԂĂAhXwĂꏊB

wH@ǂƁHx
uƁA܂ _malloc_dbg() Ŋmۂ̈́v

CD CD CD CD CD CD CD CD CD CD CD 

uĊ 0xCD evfɓ܂v
w 0xCD Hx
uB邱ƂŁÃ|C^ _malloc_dbg() ōꂽ̂
ǂƂAgOɉ܂ĂȂAƂׂ鎖ł
v
wgOHx
uvOGɂȂƁAǂ悭킩ȂƂoRă|C
^Ԃ肷邩AɁv
wrŕςꂽ肵ĂȂׂ鎞Ɏg킯ˁx
uƁBŎɑO FD ɂāB _malloc_dbg() ́A͎w
肳ꂽTCỸ͊mۂȂłv
wHx
uw肳ꂽTCYAOSoCgASoCgAvWoCg
Ƀmۂłv
wꂪx

                                                        FD FD FD FD
CD CD CD CD CD CD CD CD CD CD CD FD FD FD FD 

w FD Ăꏊ̂ƁHx
uƁB̗]ɍꂽꏊɂ 0xFD ܂B
́Az̃TCY𒴂ď񂾂ǂ𒲂ׂ邽߂Ɏg܂v
wĂ[Ɓx

    char ch[10];
    ch[10] = 'A';

w݂ȂƁHx
uB Version 6.14 ( No.114 ) ́yobt@I[o[t[z
o邽߂̋@\ȂłBۂɂĂ݂܂v

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

    // mۂ܂B
    char *pch
        = (char *)_malloc_dbg
            ( strlen( DATA ) - 2    // B
            , _NORMAL_BLOCK
            , __FILE__
            , __LINE__
            );

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

    // ܂B
    _free_dbg( pch, _NORMAL_BLOCK );
}

w - 2 Ă邩肫Ȃ킯ˁBArhĎsBx

Debug Error!
Program ...()
DAMAGE: after Normal block (#86) at 0x00421690

wă_CAOox
u _free_dbg() ́AƂɑOSoCgƌSoCg
āAꂪ 0xFD Ȃꍇɂ͂G[ołv
wŃI[o[t[`FbN킯ˁx
uƂЂƂA _free_dbg() ͉玟̂悤 0xDD 
v

                                                        DD DD DD DD
DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD 

ẅӖ́Hx
úAɎgƂɂꂪ킩悤ɁBƂ΁v

    // ܂B
    _free_dbg( pch, _NORMAL_BLOCK );
    // ǎgƂB
    TRACE( "%s\n", pch );

uāA{͂ႢȂ񂾂 _free_dbg() ĂяI|C
^gƂƂv
wƂ킩́Hx
u͂킩킯ȂǁAĂΉς݂̃|C^
xgɁv
w킩̂ˁBĂ񂾂x
uƂ킯ŁA _malloc_dbg() ɂ͐FXȃbgłv

/*
    Preview Next Story!
*/
wȂĂɂ̂łĂĕ֗ˁ[x
u͕֗Ȃꍇ̘bv
wx
u CString gȂŕƂv
wA _malloc_dbg() ōĂ݂悤ƂȂˁx
uccv
ẃ[ccx
uƂ킯Ŏv
 Version 11.15 z̊g 
wɂÂIx
ucclȂv
wx


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

EقƂ́[Pbǉ\
@Ol̃zbgn[uɂPbǉ\BnIVI̐̂IH


////////////////////////////////////////////////////////////////////
/*                          Ӂ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
*/
////////////////////////////////////////////////////////////////////

