Avatar billede naxosnaxos Nybegynder
04. november 2004 - 17:59 Der er 5 kommentarer og
2 løsninger

Nedlæggelse af hukommelse

Hej

Jeg anvender en dllimport til et externt lib i c++

[DllImport]
public extern static unsafe byte* Foo();

problemet er at den returner en pointer som jeg så kan anvende i et unsafe scope, men hvordan får man nedlagt den hukommelse som er blevet allokeret i metode kaldet og som jeg nu har en pointer til?? jeg kan nemlig ikke anvende delete[] som i C++ "the old way"
Avatar billede arne_v Ekspert
04. november 2004 - 18:04 #1
Hvis det er din egen C++ kode ville jeg lave en:

public extern static void FooFree(unsafe byte*);
Avatar billede naxosnaxos Nybegynder
04. november 2004 - 18:09 #2
så heldig er jeg ikke, tredje parts
Avatar billede arne_v Ekspert
04. november 2004 - 18:13 #3
Hvis sker der hvis du laver en ny DLL med FooFree i ?

Umiddelbart ville jeg da tro, at de 2 DLL'er delete C++ heap !
Avatar billede arne_v Ekspert
04. november 2004 - 18:14 #4
delete = delte (delete er det du vil)
Avatar billede naxosnaxos Nybegynder
04. november 2004 - 18:19 #5
hmm tja det er der måske noget om
Avatar billede arne_v Ekspert
21. november 2004 - 20:30 #6
OK ?
Avatar billede naxosnaxos Nybegynder
21. november 2004 - 21:41 #7
Nå nu har jeg afprøvet. den trejdeparts dll jeg anvendte var statisk linket og af hvad jeg er kommet frem til kan det derfor ikke lade sig gøre på den måde som du beskrev. Så skulle de være dynamisk linket.
Derudover fandt jeg ud af at der faktisk var en funktion i dll'en til at free memory, på nær et mindre leak;o)

Men for den gode idé er der point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester