Page 2 of 2

PostPosted: Wed Nov 26, 2008 10:17 am
by Antonio Linares
David,

El error era "hb_xrealloc can't reallocate memory" ?

PostPosted: Wed Nov 26, 2008 12:15 pm
by karinha
// Buenas Maestro Antonio, Maestro, y si hago tu ejemplo asi:
// Bloco por bloco de textos... Ejemplo simples.

#include "FiveWin.ch"
Code: Select all  Expand view
Function Main()

   LOCAL cText1 := Space( 1024 * 1024 )  //-> 1,048,576 kBytes
   LOCAL cText2 := Space( 1024 * 1024 )  //-> 1,048,576 kBytes
   LOCAL cText3 := Space( 1024 * 1024 )  //-> 1,048,576 kBytes
   LOCAL cText4 := Space( 1024 * 1024 )  //-> 1,048,576 kBytes
   LOCAL cResult

   cResult := LEN(cText1) + LEN(cText2) + LEN(cText3) + LEN(cText4)

   ? len(cText1)
   ? len(cText2)
   ? len(cText3)
   ? len(cText4)
   
   MsgInfo( ( "mas de 2 gigas: ", cResult ), "Resultado" )

Return Nil

//-> Esta correcto o errado?

PostPosted: Wed Nov 26, 2008 12:19 pm
by triumvirato
Antonio Linares wrote:David,

El error era "hb_xrealloc can't reallocate memory" ?


Antonio,

No consigo reproducir el error pues ya no tengo el código de prueba original, lo más cerca que ando es el fm.log un warning que genera:

Memory Allocation Report
Application: C:\Fivewin\gesco\prueba2.exe
xHarbour Version: xHarbour build 0.99.50 Intl. (SimpLex)
Compiler: Borland C++ 5.5.1
Platform: Windows XP Home Edition 5.01.2600 Service Pack 3
Time Occured: 2008.11.26 12:27:41
Total 8974 allocations (3885 reallocation), of which 8973 freed.
Highest total allocated 1154543 bytes in 5059 blocks.
WARNING! Memory allocated but not released: 40 bytes (1 blocks)
Block 1 00B2A4E8 (size 40) ORDLISTADD(0), "E8A4B200E8A4B200E0AD44000100020002000000000000000A000000000000000000000000000000"

Sin que me de el error. Pero cuando sucedió, estoy por asegurar que era el error que describes: "hb_xrealloc can't reallocate memory". Lo siento por no poder ser más explícito, pero no soy bueno dando palos de ciego tampoco.

PostPosted: Wed Nov 26, 2008 12:24 pm
by triumvirato
Con las versiones más recientes de xHarbour lo mismo...

Saludos!

PostPosted: Wed Nov 26, 2008 1:20 pm
by Antonio Linares
David,

Gracias de todas formas :-)

ya sabemos de donde proceden esos errores: de la incapacidad de redimensionar una cadena a valores cercanos a 2 gigas.

PostPosted: Fri Nov 28, 2008 9:23 am
by JoseLuis
Si miramos en éste foro:



http://www.mail-archive.com/xharbour-developers@lists.sourceforge.net/msg01180.html

Vemos que éste error comenzó a aparecer en la version de Septiembre.

Y aunque dice que puede ser posible a mlcount(), o memoline(), he quitado las líneas que hacen referencia a éstas funciones, y nada sigo sin poder facturar. Estoy dejandolo en el esqueleto para ver qué valores son los que van creciendo, y no detecto nada, ya que cuando empiezo el while, vuelvo a dar nuevos valores a las variables, así que he tenido que volver a compilar con la versión 2.7, has ver si averiguamos algo.

Antonio, sabes si la versión 8.11 que ya nos hemos descargado, está corregido éste error?

Saludos

Jose Luis

PostPosted: Fri Nov 28, 2008 10:00 am
by Antonio Linares
Jose Luis,

Es que no es un error de FWH, es un error debido al compilador, en la forma en que esta usando las cadenas.

Si pudieses reproducir el error con un ejemplo pequeño, podriamos buscar cual es la cadena que está creciendo.

De todas formas, este error tiene que ser corregido en Harbour y xHarbour, pues las cadenas deberían poder llegar hasta los 4 gigas.

PostPosted: Fri Nov 28, 2008 10:03 am
by Antonio Linares
João,

1024 * 1024 es un mega, no un giga.

El problema es al intentar llegar a los dos gigas.

PostPosted: Fri Nov 28, 2008 8:24 pm
by JoseLuis
Antonio

Ya está

La culpa la tiene:
Code: Select all  Expand view
  oPrn:cmSay( 4,10,strcapfirst(xDatos),oFont3 )


Dentro de un page.. endpage que a su vez esta dentro de un do while .. enddo.

Me ha costado, pero.....

Saludos

Jose Luis

PostPosted: Fri Nov 28, 2008 8:43 pm
by Antonio Linares
Jose Luis,

Bien! :-)

Enhorabuena por localizarlo