duda sobre manejo de memoria (heap) c++

Imagen de mirivagu
0 puntos

Hola, tengo una duda en cuanto al manejo de la memoria, bueno no soy programador ni nada, pro aspiro a serlo, estoy probando con una aplicación en c++ y qt4 y seguro que hay fugas de memoria que tengo que resolver, pero al consular la memoria que usa mi aplicación me dice que la mayoría esta siendo usada por heap.

La aplicación consta de una ventana principal que no hace nada sino mostrar un botón y un dialogo que se ejecuta al pinchar el botón de la ventana principal, el dialogo es el que reserva memoria en tiempo de ejecución, pero se supone que al cerrar el dialogo la memoria debería liberarse o al menos la mayor parte (fugas de memoria). en window si que se libera al cerrar el dialogo (como dije la mayoría de la memoria) pero en linux no. a que se debe esto?? que es heap??

cualquier respuesta es bien recibida.

Imagen de Goyo
+1
0
-1

en window si que se libera al cerrar el dialogo (como dije la mayoría de la memoria) pero en linux no

¿El mismo programa? Es muy raro.

Heap es el montón, normalmente gastarás la memoria del montón:

- Cuando uses new para crear un objeto y obtener un puntero a él.
- Cuando uses cualquier función que devuelve un puntero a un objeto nuevo.

Para liberar esa memoria hay que usar delete con un puntero al mismo objeto. Si el destructor de la clase o de la de alguno de sus miembros no está bien implementado es posible que no se libere toda la memoria.

+1
0
-1
Imagen de mirivagu
+1
0
-1

primero que nada gracias por la responder, ahora bien, el programa que intento hacer es multiplataforma porque solo depende de qt4, por lo que lo ejecuto en linux (mi casa) y en windows (trabajo), justo ayer estaba leyendo que la memoria de heap la puede manejar de diferente forma cada sistema operativo, y que linux es mas "permisivo" (no recuerdo como decia exactamente) en cuanto a la memoria y solo la reclama cuando esta se esta agotando, pero no estoy seguro y tal vez yo soy el que esta haciendo mal las cosas. por cierto, no tengo problemas con punteros y operadores new y delete (eso creo XD).

+1
0
-1
Imagen de Goyo
+1
0
-1

No sé, supongo que es posible que lo que estés viendo sean diferencias en la gestión de memoria que hace cada sistema operativo.

Una comprobación tosca puede ser ejecutar una y otra vez la función sospechosa, si hay una fuga tendrías que ver un aumento constante de la memoria.

+1
0
-1
Imagen de mirivagu
+1
0
-1

pues si, definitivamente hay unas cuantas fugas por alli, con la prueba que me sugieres hay un aumento de memoria, pequeño pero lo hay. sobre el heap, pues supongo que es cosa de linux, ya que he hecho pruebas con kwirte (editor de texto plano kde4) agregando muchas lineas hasta que la memoria aumenta considerablemente y luego borro todas las lineas y la memoria no disminuye, otra cosa es que sea problema de qt4.

+1
0
-1