Я опубликовал проблему и получил ответ здесь .Вот код, который я отлаживал на 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]: блок кучи в 004114E8 изменен в 00411514последний запрошенный размер 24 Windows вызвал точку останова в mkdir.exe.
Это может быть связано с повреждением кучи, что указывает на ошибку в mkdir.exe или любой из загруженных им библиотек DLL.
Это также может быть связано с тем, что пользователь нажимает клавишу F12, когда mkdir.exe находится в фокусе.
В окне вывода может быть больше диагностической информации.Программа '[3008] mkdir.exe: Native' завершила работу с кодом 0 (0x0).