He aprendido dolorosamente durante los últimos días mucho sobre la programación en C++.
Me encanta :)
Sé que debería liberar memoria: las reglas doradas "each malloc = free" o "each new = delete" existen ahora en mi mundo, pero las estoy usando para objetos bastante simples.
¿Qué pasa con el vector? Siempre que puedo, uso vector.clear() pero eso claramente no es suficiente, porque tengo grandes pérdidas de memoria.
¿Podría orientarme sobre cómo debo tratar esta cosa?¿Debo eliminar el vector <string>?
* Editar
Gracias, sus comentarios me hicieron pensar en el algoritmo de esta aplicación y voy a poder eliminar el vector totalmente. : O
Lo siento, comencé a explicar cuál es mi caso de uso aquí y descubrí lo que realmente necesito. Es así cuando codifica los últimos 3 días durante 18 horas al día: | * Editar 2
Esto es una locura. Mediante pequeños cambios en el código, eliminé el uso de memoria de 2x130 mb (en constante crecimiento) a 2x 13,5mb, tamaño constante. Gracias por hacerme pensar sobre eso de otra manera.
Btw. tal revisión de código propio tiene un nombre - ¿alguien recuerda eso? Es cuando le preguntas a alguien (incluso a tu madre o tu perro) y comienzas a explicar cuál es tu problema, y de repente tú mismo resuelves este problema de 5 horas, simplemente tratando de verlo desde otro punto de vista, o simplemente tratando de resumir qué es todo sobre. A menudo me encuentro atrapado en eso ...
Como es nuevo en la gestión de la memoria, quizás pueda explicar cómo sabe que está perdiendo memoria. Algunas formas de medir las pérdidas de memoria no reflejan realmente lo que está sucediendo. –
Es posible que desee publicar un código de ejemplo de cómo está utilizando la clase vectorial. Por ejemplo, ¿tiene vectores de punteros para objetos creados dinámicamente? –
bueno, simplemente veo que la ejecución de mi aplicación resulta en más y más memoria ocupada. Estoy ejecutando operaciones bastante fáciles (haciendo hashes md5 en 2 procesos, vinculados con mpcih2), para mi prueba son exactamente 25 millones de operaciones. Un proceso envía a los otros paquetes de datos (cadenas) y el segundo calcula hashes para eso. Al final de la ejecución tengo 2x 130 mb tomados. Eso es demasiado para ser normal. – IamDeveloper