[C++]MBM5 Minnesläckage med Shared Memory

Permalänk

[C++]MBM5 Minnesläckage med Shared Memory

Tror jag blir tokig snart, har hållit på med ett program som ska läsa in MBM5 temperaturer, mha Shared Memory. Ibörjan när jag fick det att funka blev jag skitglad, ända tills jag fick syn på att det läcker 4KB vid varje inläsning, och jag läser in 3 sensorer varje sekund.

Jag använder denna koden som finns på MBM:s hemsida.
Så här gör jag ungefär:

CMBM las;
if(las.isConnected())
{
}

det läcker 4K, även testat såhär:

CMBM *las;
try
{
las=new CMBM;
}
catch(...)
{
}
if(las->isConnected())
{
}
delete las;

funkar inte heller, alltså gör jag något jättefel eller?
Har hållt på hur mycket som hällst utan nån ändring.

Visa signatur

*** Signaturen raderad på grund av för många rader. Läs forumreglerna. /xphaze

Permalänk
Medlem

En vild chansning är att lägga in:

if( data )
CloseHandle(data);

i

void CMBM::DisConnect()

Visa signatur

//cykze

Permalänk

Det funkade inte, det låster sig direkt på raden:
CloseHandle(data);

Visa signatur

*** Signaturen raderad på grund av för många rader. Läs forumreglerna. /xphaze

Permalänk
Medlem

Det var som sagt en vild gissning. Står det inget om det på MBM's hemsida?

Visa signatur

//cykze

Permalänk

I DisConnect(), lägg till UnmapViewOfFile(data) innan du stänger handlen.

Såvitt jag förstår skapar du en ny instans 3 gånger per sekund som du sedan förstör. Spontant känns det lite dumt. Du borde nog istället ha en instans som du använder hela tiden.

Permalänk

Nä det funkade tyvärr inte heller.
Alltså det blir så varje gång man läser, även om jag bara skapar pekaren och alokerar minnet i början av programmet. Om det var det du menade.

Visa signatur

*** Signaturen raderad på grund av för många rader. Läs forumreglerna. /xphaze