Error reallocate memory

User avatar
Antonio Linares
Site Admin
Posts: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

David,

El error era "hb_xrealloc can't reallocate memory" ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 7942
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Post 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

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?
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post 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.
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post by triumvirato »

Con las versiones más recientes de xHarbour lo mismo...

Saludos!
User avatar
Antonio Linares
Site Admin
Posts: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
JoseLuis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

João,

1024 * 1024 es un mega, no un giga.

El problema es al intentar llegar a los dos gigas.
regards, saludos

Antonio Linares
www.fivetechsoft.com
JoseLuis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

Antonio

Ya está

La culpa la tiene:

Code: Select all | Expand

  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
User avatar
Antonio Linares
Site Admin
Posts: 42556
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 80 times
Contact:

Post by Antonio Linares »

Jose Luis,

Bien! :-)

Enhorabuena por localizarlo
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply