1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Vb.net, dll's e memória utilizada

Discussão em 'Programação' iniciada por BirdOfPrey, 10 de Setembro de 2006. (Respostas: 1; Visualizações: 738)

  1. BirdOfPrey

    BirdOfPrey Power Member

    Oi, eu tenho uma aplicação em vb.net que executa código que está num dll que tb fiz no VC++, para utilizar rotinas do openssl.
    O problema é que as funções deste dll, durante a execução normal do programa tem de ser acedidas muito regularmente e o mais depressa possivel, o que faz com que veja a memória utilizada no task manager a crescer até a uns incriveis 200MB e mais se o deixar a correr!!!!
    Tentei resolver o problema libertando o máximo de mem possivel com as funções do VC++, tipo free e os frees do openssl, mas o problema continua na mesma.
    Depois de muito martelanço resolvi criar rotinas simples, só o vb a aceder uma rotina do dll que basicamente retorna o que lhe foi dado.
    O código é o seguinte no dll
    Código:
    extern "C" __declspec(dllexport)char *Do_Nothing(char *data1){
    return data1;
    }
    
    E no vb:
    Código:
        Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim hLib As Integer = LoadLibrary(dllPath)
        End Sub
    
        Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim data As String = "1234568716327138719827398217398273917129739127329173219873218979879217397981273"
            txt1.Text=Do_Nothing(data)
           data=Nothing
        End Sub
    
        Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
           FreeLibrary(hLib) 'release library
          hLib=Nothing
        End Sub
    
    Cada vez que carrego no botão 2 vejo a memória a crescer uns 10 bytes, que claro ao fim de uns bons milhares de execuções vai dar os tais 200MB e mais de memória, que não é libertada mesmo quando faço o freeLibrary no botão 3!
    Alguem faz ideia como posso resolver isto?
     
  2. Galbne_PT

    Galbne_PT Power Member

Partilhar esta Página