En un programa en C++ que estoy realizando he detectado (o más bien me han detectado) un memory leak. Efectivamente, el programa no para de chupar memoria.
Todas las estructuras que utilizo para almacenar objetos son de la STL (map, list...) y no hago uso de memoria dinámica, excepto en un pequeño punto que si hago un new pero siempre se realiza el delete, el problema no está allí. He comprobado también que el problema no está en que lleno las estructuras que uso sin vaciarlas haciendo que no se usen (el programa hace uso de la pcap y guardo información de paquetes, he hecho que no guarde nada y sigue chupando la memoria).
Finalmente me parece haber podido detectar el leak en el siguiente método:
bool NetManager::changeChannel(unsigned short channel) const {
//std::stringstream ss;
//ss << "iwconfig " << monInterface << " channel " << channel << " > /dev/null 2> /dev/null";
//ss.str().c_str();
system("iwconfig mon0 channel 13 > /dev/null 2> /dev/null");
return channel == 13;
}
El código, obviamente, era diferente, pero he ido modificándolo para ver si daba con que realiza el leak, llegando al punto de que me parece haber detectado que es el código que hay ahora mismo, por lo tanto es la llamada a "system()"
Si quito el system la memoria se mantiene
¿Alguien se le ocurre que coño puede estar pasando?