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
E no vb:
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?
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?