Я начинаю работать с C++ снова после долгого перерыва при кодировании на Java. Я пытаюсь преобразовать задание обработки данных, которое у меня есть на C++. Я столкнулся с проблемой, когда я пытаюсь открыть и записать в 100+ файлов одновременно (разбивая текстовый файл 10GB на файлы по дате). Опять же, я вернулся на C++ уже около двух дней, так что я полностью заполнен, мой код пронизан другими проблемами, но я создал простейший фрагмент, который показывает проблему.Сбой при записи в несколько файлов
- Я могу изменить files_to_open на любое число, и у меня нет никаких проблем.
- Если file_to_write равно < = 125, он запускает файл.
- если файл_to_write> 125, он сработает.
Что может вызвать это?
#include <map>
#include <sstream>
int main() {
std::map<int, FILE*> files;
int files_to_open = 200;
int files_to_write = 200;
// Open a set of files.
for(int i = 0; i < files_to_open; i++) {
std::ostringstream file_path;
file_path << "E:\\tmp\\file_" << i << ".txt";
files[i] = fopen(file_path.str().c_str(), "w");
}
// Write data to files.
for(int i = 0; i < files_to_write; i++) {
printf("%d\n", i);
fwrite("Some Data", sizeof(char), 9, files[i]);
}
// Close files.
for (auto& file : files) {
fclose(file.second);
}
// End it all.
printf("Press Any Key to Continue\n");
getchar();
return 0;
}
Где это крах? Я полагаю, в пишущей петле? – Trojan
yep, попробуйте запустить его в отладчике ... – vines
Почему вы не используете IOStreams ?? – 0x499602D2