В моем коде есть элемент map<vector<double>,double>
с именем EU
.
Я заметил, что использование памяти моим кодом имеет тенденцию накапливаться до тех пор, пока я не использую всю доступную память на моей машине (от ~ 200 МБ до ~ 4 ГБ).комментируя вещи в моем коде, я пришел к выводу, что строка, которая обращается к элементу на этой карте, - это та, которая, как закомментировано, предотвращает увеличение использования памяти.Я получаю доступ к значению с помощью оператора [], и я подумал, что это может быть из-за того, что двойные значения не совсем такие, как на карте.Затем я искал случай, когда это могло бы быть:
std::map<vector<double>,double>::iterator mit = EU.find(s);
if (mit == EU.end()){
for (int i = 0; i < 3; i++){
O.w(s[i]);
}
cin.ignore();
}
Здесь O.w(s[i])
- это функция В I классе, который я создал, для отображения содержимого на экране / записи на жесткий диск.В этом случае это просто printf("%0.10f\n",s[i])
, и я использую cin.ignore()
только для остановки программы, чтобы я мог проверить вывод.Что также вызывает увеличение использования памяти.Почему это так и как я могу предотвратить это?
Спасибо.