Эта 5-строчная программа на C сломала мой SSD, Могу Ли я Знать, Почему???? Я запустил его в коде VS, и меня предупредили только после того, как на моем твердотельном накопителе осталось 58 МБ свободного места

#c #file-handling #solid-state-drive

Вопрос:

Я запустил его в коде VS, и меня предупредили только после того, как на моем твердотельном накопителе осталось 58 МБ свободного места. Я не знаю, почему моя Windows не предупредила меня или не остановила процесс, потребовалось около нескольких минут, чтобы заполнить мой SSD, который занимает около 130 ГБ места. `

 #include lt;iostreamgt; #include lt;fstreamgt; #include lt;stringgt; using namespace std; main() {  fstream fr,fw;  string s;  fr.open("somefile.txt", ios::in);  fw.open("somefile.txt", ios::app);  fwlt;lt;"Some Textn";  while( getline(fr,s) ){   fwlt;lt;slt;lt;"copied"lt;lt;endl;  }  fr.close();  fw.close(); }  

`

Мое хранилище заполнилось за очень короткий промежуток времени

Комментарии:

1. Вы читаете и записываете в один и тот же файл. Таким образом, поток данных никогда не заканчивается, и он записывается бесконечно.

2. У вас есть бесконечный цикл (потому что всегда есть новая строка текста, потому что вы пишете новую строку текста на каждой итерации), который записывается в файл — поэтому, конечно, в какой-то момент он исчерпает доступное дисковое пространство.

3. Я проверил в своем местном и, похоже, проблема, о которой вы упомянули, существует только в том случае, если somefile.txt она уже существует и имеет некоторые данные. Можете ли вы подтвердить и обновить свой вопрос, чтобы другие могли воспроизвести его? Чтобы не столкнуться с такой проблемой, как вы,я просто добавил счетчик, while( getline(fr,s) ) например, int counter = 1000; while( —counter amp;amp; getline(fr, s) ).