Páginas (2): 1 2   
kokodrilo   21-09-2020, 17:44
#1
buenas este mensaje me sale al cerrar VisorRV1960

que exactamente quiere decir y que se puede hacer para remediar?

el traductor dice esto: gbx3 [3161]: advertencia: 2909 asignaciones no liberadas.

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
vuott   21-09-2020, 23:07
#2
...un ''Objeto '' es la expresión concreta, fáctica de una Clase.
La Clase es un modelo abstracto, por lo tanto en sí mismo inutilizable en el código. Para que la Clase pueda ser utilizada en el código, debe concretarse mediante una forma concreta: el Objeto precisamente.
El Objeto, sin embargo, para que exista, debe ser creado. La palabra clave para crear un Objeto - por código - es generalmente "New ".
 Pero el Objeto, para poder ser creado, necesita una sustancia también concreta: la memoria.
Por lo tanto, la creación de Objeto presupone el destino de parte de la memoria a la creación del Objeto. Esta parte de la memoria debe estar destinada exclusivamente a la estructura del Objeto, ya que, si no fuera exclusiva, el sistema podría utilizar las celdas de esta memoria para otros usos.
......imagínese, por ejemplo, qué desastre sería, si después de asignar un valor a una variable, el sistema, con el fin de realizar algunas otras operaciones, sobrescribiera las celdas de memoria donde se había escrito el valor de aquella variable !!!
La asignación exclusiva de una porción de memoria, para escribir datos (que es exactamente lo que sucede cuando se crea un Objeto), se dice "to allocate" (no se si existe una palabra igual en español; en italiano es "allocare").
La asignación de memoria puede ser automática o arbitraria. Automática es la asignación realizada por el sistema sobre la base del tamaño predeterminado de la memoria a ocupar (por ejemplo, el tipo de datos Short de Gambas ocupará siempre 2 bytes de memoria. Esto significa que el sistema reserva automáticamente dos bytes de memoria).
La liberación de la parte de la memoria reservada, relativa a una variable automática, se hará también de forma automática por el sistema.
La asignación arbitraria se produce, por ejemplo, con la función "Alloc()", donde se debe/puede especificar por codigo el número de bytes de memoria a ocupar, a reservar.
Cuando el sistema asigna (de manera automática o arbitraria) una porción de memoria, él sustrae esta parte de memoria del uso para otros usos. Esa parte de la memoria permanece destinada, dedicada solo y exclusivamente al propósito para el cual fue asignada.
Por lo tanto, para que el sistema pueda volver a utilizar esa porción de memoria anteriormente reservada, debe ser liberada en las modalidades previstas por el lenguaje de programación utilizado.
Cerrar un programa, todavía teniendo porciones de memoria reservadas para él, da lugar a un error "allocation(s) non freed ".
Hagamos un ejemplo abstracto y extremo: imaginemos que todavía tenemos a disposición solamente 1000 bytes de memoria, y que nuestro programa los ha ocupado todos (reservados para sí). Cuando cerramos el programa, si no liberamos aquella parte de memoria anteriormente reservada (...es decir si no volvemos a poner la memoria a disposición de otros programas), nuestro ordenador quedaría bloqueado, porque tendría toda la memoria reservada, inutilizable !

......no liberaste 2909 asignaciones de memoria que tu programa había reservado anteriormente para su recursos. Rolleyes
Última modificación: 22-09-2020, 16:15 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
kokodrilo   22-09-2020, 01:47
#3
excelente explicación pero como se libera la memoria? o como se haría esa tarea?

cerré visor y gambas, abrí gambas y visor y cerré visor y me da gbx3 [23422]: warning: 165 allocation(s) non freed.
Última modificación: 22-09-2020, 02:40 por kokodrilo.

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
jguardon   22-09-2020, 08:01
#4
¿Desde cuándo ocurre ese problema?

Tendrás que revisar los últimos cambios en tu código ya que es muy probable que provenga de algo reciente que hayas introducido en tu programa.

Es muy difícil averiguar cualquier fallo de ese tipo sin tener una cronología.

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
vuott   22-09-2020, 16:24
#5
Como has dicho jguardon hace falta saber cuáles y cuántos objetos, previamente creados, no han sido regularmente destruidos.
A menudo ese tu error ocurre cuando has creado/abierto ventanas y luego no las has destruido/cerrado.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
kokodrilo   22-09-2020, 17:32
#6
esto es lo que me tira si de cero abro gambas y visor y cierro visor inmediatamente:

gbx3 [8482]: warning: circular references detected:
gbx3:     1 Fcapitulo
gbx3:     1 HistoryVers
gbx3:     1 Ffoco
gbx3:     1 FMaxZ
gbx3:     1 foco
gbx3:     1 espacio
gbx3:     1 aspell
gbx3:     1 MaxZ
gbx3:     1 GridViewSelection
gbx3:     1 _GridView_Rows
gbx3:     1 _GridView_Columns
gbx3:     6 Spring
gbx3:     1 ScrollArea
gbx3:     1 GridView
gbx3:     1 Connection
gbx3:    28 Picture
gbx3 [8482]: warning: 165 allocation(s) non freed.

yo pensé que 'quit' se encargaba de matar los procesos y ventana

gambas esta un poco errático, a veces cuando lo cierro me dice que hay cambios sin guardar en cierto formularios, cuando yo no hice ningún cambio en ellos.
Última modificación: 22-09-2020, 17:41 por kokodrilo.

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
vuott   22-09-2020, 23:15
#7
warning: circular references detected

Quizas tu programa cerra Objetos "Parent" pero sin cerrar su "Child" que han sido abierto anteriormente.

https://sourceforge.net/p/gambas/mailman.../13598355/
https://foro.gambas-es.org/viewtopic.php...660#p36660
https://www.gambas-it.org/smf/index.php?topic=2144.0

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
kokodrilo   23-09-2020, 22:50
#8
entonces Quit deberia llamarse ForceQuit

y haciendo un array de procesos y añadimos las ventanas que se cargan, y cuando hacemos close en ella la eliminamos del array pero si en el evento close del formulario principal ahí hacemos un foreach para cerrar los procesos o ventanas que quedan abiertas, sino como se haría eso???

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
jguardon   24-09-2020, 11:44
#9
En mi opinión la instrucción Quit sólo debería usarse en casos muy puntuales y por algún motivo justificado. También en aplicaciones de terminal, pero en aplicaciones gráficas mi consejo es no usarlo nunca. Si hay que cerrar la aplicación, bastaría con cerrar el formulario principal en la mayoría de los casos y el sistema se encargará de recolectar los objetos creados a partir de la clase principal y destruirlos ordenadamente.

Nunca lo he hecho, pero supongo que se puede llamar al Form_Close() del formulario principal desde cualquier otro formulario mediante una función pública o un evento creado ad-hoc.

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
kokodrilo   24-09-2020, 15:51
#10
jguardon, el problema es el siguiente, tienes un formulario del cual pueden salir muchas ventanas en modo show

entonces cierras la ventana principal de la aplicación y te quedan abiertas 3 o cuatro según el usuario las haya abiertos y queda desprolijo que tu programa este cerrado y queden ventanas ahí sin cerrar y ni te cuento si hay algún vídeo o audio ejecutándose o algún timer
Última modificación: 24-09-2020, 15:52 por kokodrilo.

El tiempo de las manifestaciones caducó pero el boicot con auto sacrificio es el camino para derrotar al sistema.
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.