問題を投稿して、ここで回答を得ました。これが私がVC2010でデバッグしたコードです。最後に表示される実行時エラーが発生します。sdirの使用の何が問題になっています か?
#include<iostream>
#include<stdlib.h>
#include<windows.h>
void make_dir(int depth, char *dir) {
if (depth < 3) {
CreateDirectoryA (dir,NULL);
for (int i = 0; i < 10; i++) {
char *sdir= (char*)malloc(strlen(dir+10)); // XXX 10?
strcpy(sdir, dir);
sprintf(sdir + strlen(sdir), "\\%d", i);
printf("%s\n", sdir);
CreateDirectoryA(sdir,NULL);
make_dir(depth + 1, sdir);
free(sdir);
}
}
}
int main()
{
make_dir(0,"dir");
return 1;
}
エラーは次のとおりです。
HEAP [mkdir.exe]:00411514で変更された004114E8のヒープブロックが、要求されたサイズの24を超えたため、mkdir.exeでブレークポイントがトリガーされました。
これは、ヒープの破損が原因である可能性があります。これは、mkdir.exeまたはロードされたDLLのいずれかにバグがあることを示しています。
これは、mkdir.exeにフォーカスがあるときにユーザーがF12キーを押したことが原因である可能性もあります。
出力ウィンドウには、より多くの診断情報が表示される場合があります。プログラム'[3008]mkdir.exe:Native'がコード0(0x0)で終了しました。