Это очень простая проблема, но я ошеломлен тем, что не могу найти легкое решение.
Я пытаюсь создать две строки, которые являются путем к файлам.
/ Метаданные / битовая карта
/Metadata/Metadata.bin
но во второй раз, когда я пытаюсь сделать strcat()
с той же переменной src, происходит повреждение памяти
//create the dir strign to append
char* metadata_dir = strdup(MNT_POINT);
strcat(metadata_dir, "Metadata/");
char* bitmap_file = strdup("");
strcat(bitmap_file,metadata_dir);
strcat(bitmap_file,"bitmap");
printf("%s\n",bitmap_file);
char* meta_file = strdup("");
strcat(meta_file, metadata_dir);
strcat(meta_file, "Metadata.bin");
printf("%s\n",meta_file);
Rigth в линии
strcat(meta_file, metadata_dir);
происходит повреждение памяти.
Я уверен, что metadata_dir не поврежден, потому что я могу напечатать его в любом месте кода, и он выглядит хорошо.
Странно то, что это происходит в зависимости от машины, на которой он работает. В Ubuntu 64 работает просто отлично. Но в 32-битной версии нет.