====free(3)==== ~~META: date created = 2005-07-31T10:53:33 &subject = Programming,C,C++,VC++ &creator = t.ashula &rights license = by-sa ~~ 久々にやってしまったので自戒を込めてメモ. VS.netのVC++だと,malloc()で確保した以上の領域をいじると,free()出来ない様になる. 例えば wchar_t* p_src = L"hoge"; size_t i_srclen = wcslen(p_src); wchar_t* p_dst = (wchar_t*)malloc(i_srclen); if (p_dst != NULL){ memset(p_dst,0,(sizeof(wchar_t) * (i_srclen)); wcscpy(p_dst,p_src); } free(p_dst); として,''_DEBUG''でコンパイルすると文法エラーにはならないのだけど,実行時に''free(p_dst)''出来ないよと怒られます.ところがgcc3.4.4/Cygwinでコンパイルすると問題なくfree()できてしまうので気がつかない.