久々にやってしまったので自戒を込めてメモ.
VS.netのVC++だと,malloc()で確保した以上の領域をいじると,free()出来ない様になる.
例えば
lang:c
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()できてしまうので気がつかない.