Память «утечка» - это то, где память непреднамеренно не удаляется в течение определенного периода времени и заканчивается сокращением по мере продолжения процесса. Если это процесс, который выполняется в течение очень длительного периода времени, например сервер, который редко перезапускается, это может быть серьезной проблемой.
Детекторы утечки памяти будут извлекать любую память, которая выделяется и не удаляется вызовом программирования, поэтому valgrind и т. Д. Сообщают об этом как утечку.
Это также проверяет ваш код на программы, такие как valgrind, и, следовательно, чем меньше «мешает», тем легче будет выявлять настоящие утечки. Поэтому мой совет заключается не в том, чтобы позволить системе очистить память, или синглтоны и т. Д. Для вас, когда вы выделили указатель с новым (или malloc или new []).
Для этого вы можете выполнить «очистку». Просто у вас есть объект в области вашей карты, у которого есть делектор (поскольку он будет удален при его выходе), который очистит указатели на карте. Поскольку вам нужно, чтобы ваш объект был удален сначала, он должен быть объявлен позже карты.
+1 - но w.r.t. auto_ptr Я бы использовал язык сильнее, чем «избегать», учитывая, что контейнеры auto_ptrs не должны компилироваться. (И auto_ptr отлично справляется везде). Также рассмотрите 'boost :: ptr_map'. –
Спасибо за помощь. Я думаю, мне нужно двигаться, чтобы повысить 1.45 – Killrazor