Avatar billede frostholm Praktikant
18. juni 2002 - 12:03 Der er 4 kommentarer og
1 løsning

Free memory

Jeg håber der er en der kan hjælpe mig med dette spørgsmål :

Jeg oprette en instans af ms-xml parserobject på følgende måde :

EVAL_HR(objDOMDoc.CreateInstance("Msxml2.DOMDocument.4.0"));

Det sker i flere forskellige procedure, jeg gik først ud fra at den automatisk blev frigivet når jeg afsluttede scope, men det ser ikke sådan ud.

Jeg har så prøvet med følgende :

objDOMDoc->release():

Men den resulter i en Catch, da jeg i min hoved procedure har en sådanne :

try
....
....
kald funktion som oprette instans og prøver at nedlægge den ved exit
.....
catch
  ....
  ....

Er der der nogen der lige kan se hvad min fejl er ?

Mvh

Michael F
Avatar billede jpk Nybegynder
18. juni 2002 - 12:08 #1
Hvilken type er objDOMDoc?
Avatar billede frostholm Praktikant
18. juni 2002 - 12:22 #2
det er en pointer :    IXMLDOMDocumentPtr objDOMDoc;
Avatar billede jpk Nybegynder
18. juni 2002 - 12:45 #3
COM smart pointers BLIVER frigivet når de løber ud af scope!
Du skal ikke kalde release, det sker automatisk.
Hvis du selv vil frigive pointeren, kan du assigne den værdien NULL.
Avatar billede frostholm Praktikant
18. juni 2002 - 13:09 #4
Gælder det også instansen man kreere, dvs den plads Msxml2.DOMDocument.4.0" optager i hukommelsen, vil den ogsaå blive frigivet når man forlader scope, eller sætter com-pointeren til at pege på null ?
Avatar billede jpk Nybegynder
18. juni 2002 - 13:34 #5
Instansen kan muligvis leve videre i hukommelsen.
Hvis du kalder AddRef på den eller assigner en anden smart pointer til den (AddRef kaldes så internt), nedlægges den ikke før den reference count er 0.
Hvis du kalder CoUninitialize(), nedlægges den, men du skal huske at assigne pointeren værdien NULL, først!
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
Kurser inden for grundlæggende programmering

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