Jump to content
Fivewin Brasil

Problema com XB_REALLOC


emotta

Recommended Posts

Pessoal, durante anos tivemos um bug em nosso sistema que contornavamos e nao corrigiamos. O problema era com relacao a manipulação de grandes STRINGS (acima de 50mb) ou então lendo um arquivo texto com MEMOREAD sendo que o arquivo era maior que 50mb.

Hoje descobrimos a solução para isso e estou compartilhando aqui caso alguem esteja passando por isso. Com essa solução, a limitação que era de 50mb sobre para o limite da memória disponivel. (em testes aqui fizemos com mais de 5gb e não tivemos problema).

Segue a solução que o meu pessoal aqui descobriu com informações também do forum da fivetech (http://forums.fivetechsupport.com/viewtopic.php?f=3&t=17889&p=93741&hilit=optg+hb_xrealloc#p93741).

O hb_xrealloc ocorre quando teoricamenteo estoura a quantidade de memória disponivel para ser usada.

Ocorre
que no xHarbour Comercial, quando compilado em modo GUI ele adiciona a
lib (xHarbour\lib\optg.lib), nesta lib existem as funções de tratamento
hb_xrealloc, hb_xgrab...etc...e provavelmente elas possuem um limite.
Nos testes este limite era de 50mb.



Retirando a lib da compilação, o xharbour passa a manipular a quantidade de
memória normalmente (como ocorre no modo console), pois as funções
hb_xrealloc, hb_xgrab..etc já estão na lib (\xharbour\lib\xhb.lib) e
estas não possuem limite (vai da quantidade de RAM disponivel).
Link to comment
Share on other sites

Olá Eduardo, boa tarde

primeiramente obrigado por compartilhar a informação

utilizo xHabour NÃO COMERCIAL, mas também tenho problemas eventuais com o xrealloc , que resolvo com o hbgcall

sobre a solução que vc apresentou, verifiquei a lib que vc citou (optg) não está sendo compilada no meu projeto (utilizo xDev para compilar)

vc apurou mais alguma informação sobre isso ?

Abraço e obrigado

Link to comment
Share on other sites

essa solucao que postei é exatamente quando o HB_GCALL() ou HB_GCALL(.T.) nao resolve.

e faltou mencionar, isso é somente no xHarbour comercial, pois na free a lib nao é compilada mesmo.

sobre seu problema nao sei dizer, infelizmente. Vc consegue isolar mais ou menos o ponto que da o problema e saber se e alguma manipulacao de string ou acumulo de array? se for é porque ele está ficando grande demais...

abraços

Olá Eduardo, boa tarde

primeiramente obrigado por compartilhar a informação

utilizo xHabour NÃO COMERCIAL, mas também tenho problemas eventuais com o xrealloc , que resolvo com o hbgcall

sobre a solução que vc apresentou, verifiquei a lib que vc citou (optg) não está sendo compilada no meu projeto (utilizo xDev para compilar)

vc apurou mais alguma informação sobre isso ?

Abraço e obrigado

Link to comment
Share on other sites

  • 1 month later...

apague a OPTG.LIB

Crie uma FUNCTION qualquer e mande compilar uma LIB . Então coloque o nome desta lib como OPTG.LIB e copie para dentro da pasta XHB\LIB

Cara no meu XBP nao tem a inclusao desta lib.

Fiz um teste renomeando esta lib e tentei compilar, da erro na compilacao que nao acha essa lib.

como vc fez pra isso ocorrer ?

meu xHarbour é comercial e estou na versao 1.0.0

Link to comment
Share on other sites

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...