delete演算子がパルプンテ状態に
// VC9 #include <iostream> #include <cstring> #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") void foo(const WCHAR *path) { WCHAR *pDir = new WCHAR[wcslen(path)]; wcscpy(pDir, path); PathRemoveFileSpec(pDir); // pDir を使った処理 delete [] pDir; // 暴走、もしくは heap corruption detected }
deleteで配列を開放すると奇妙なことがおこる。暴走したり、エラーメッセージが出たり。たぶんnewの時点で、'\0'の分を確保し忘れているから。いつもメモリー破壊してばかりだな自分は。ちゃんとwcscpy_s()使ったほうがいいわ。