/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
objekter som lokale memory handlers
Fra : Jason Who


Dato : 30-01-03 09:21

Det sker at man skal allokere en bid hukommelse dynamisk, og det sker at man
ikke får slettet den hukommelse igen før man forlader routinen hvori man
allokerer.

Fik den ide at man vel kunne lave et memory objekt som kunne duplikere new's
opførsel og lade en allokere, men som også holder styr på hvad man har fået.
Den skal også have samme funktionalitet som delete, så man kan frigive
pladsen igen.
Det smart ligger i destructoren hvor al plads som er allokeret gennem dette
objekt
vil blive frigivet, hvis det ikke er sket gennem Delete(void *) allerede.
Hvis man har en funktion hvori man skal bruge ekstra hukommelse, men denne
hukommelse skal
frigives når man forlader funktionen, så kunne man oprette objektet,
allokere plads, bruge pladsen og forlade funktionen igen uden at få leaks.

Hm.. faktisk er det lidt henad det man vil opnå hvis man eksempelvis bruger
en stl-container.
Der frigives pladsen også. Det er så mere _en_ gang for alle allokering,
istedet for
generel memory håndtering.

Er det bare mig der er sent ude, når jeg først får tanken nu? Er det noget i
andre har
gjort længe?




 
 
Mogens Hansen (30-01-2003)
Kommentar
Fra : Mogens Hansen


Dato : 30-01-03 18:27


"Jason Who" <jw@nomail.here> wrote

[8<8<8<]
> Er det bare mig der er sent ude, når jeg først får tanken nu? Er det
> noget i andre har gjort længe?

Du kan måske have glæde af at kigge på:
* klassen std::auto_ptr
http://www.dinkumware.com/manuals/reader.aspx?b=p/&h=memory.html
* Boost smart pointer typerne
http://www.boost.org/libs/smart_ptr/index.htm
http://www.cuj.com/experts/2008/sutter.htm?topic=experts
* Loki smart pointer:
http://sourceforge.net/projects/loki-lib/
Modern C++ Design: Generic Programming and Design Patterns Applied
Andrei Alexandrescu
ISBN 0-201-70431-5
* Arena

http://www.google.com/search?q=arena+Matt+Austern&ie=UTF-8&oe=UTF-8&hl=da&lr
=
http://www.cuj.com/experts/1910/austern_l1.htm?topic=experts

Venlig hilsen

Mogens Hansen




Jesper Sørensen (31-01-2003)
Kommentar
Fra : Jesper Sørensen


Dato : 31-01-03 02:10

"Jason Who" <jw@nomail.here> wrote in message
news:b1an65$12d2$1@news.net.uni-c.dk...
> Det sker at man skal allokere en bid hukommelse dynamisk, og det sker at
man
> ikke får slettet den hukommelse igen før man forlader routinen hvori man
> allokerer.
>
> Fik den ide at man vel kunne lave et memory objekt som kunne duplikere
new's
> opførsel og lade en allokere, men som også holder styr på hvad man har
fået.
> Den skal også have samme funktionalitet som delete, så man kan frigive
> pladsen igen.
> Det smart ligger i destructoren hvor al plads som er allokeret gennem
dette
> objekt
> vil blive frigivet, hvis det ikke er sket gennem Delete(void *) allerede.
> Hvis man har en funktion hvori man skal bruge ekstra hukommelse, men denne
> hukommelse skal
> frigives når man forlader funktionen, så kunne man oprette objektet,
> allokere plads, bruge pladsen og forlade funktionen igen uden at få leaks.
>
> Hm.. faktisk er det lidt henad det man vil opnå hvis man eksempelvis
bruger
> en stl-container.
> Der frigives pladsen også. Det er så mere _en_ gang for alle allokering,
> istedet for
> generel memory håndtering.
>
> Er det bare mig der er sent ude, når jeg først får tanken nu? Er det noget
i
> andre har
> gjort længe?

http://www.flipcode.com/tutorials/tut_memleak.shtml

mvh
JS



Mads Orbesen Troest (01-02-2003)
Kommentar
Fra : Mads Orbesen Troest


Dato : 01-02-03 18:24

> Er det bare mig der er sent ude, når jeg først får tanken nu? Er det noget
i
> andre har gjort længe?

Well, i sin mest simple form - auto_ptr<>, der automatisk deleter det objekt
der peges på når den går ud af scope, er det en del af Ansi C++ og med andre
ord en ret gammel tanke. ;)

/\/\\ads Orbesen Troest



Jason Who (03-02-2003)
Kommentar
Fra : Jason Who


Dato : 03-02-03 07:52

> Well, i sin mest simple form - auto_ptr<>, der automatisk deleter det
objekt
> der peges på når den går ud af scope, er det en del af Ansi C++ og med
andre
> ord en ret gammel tanke. ;)

Hmm.. takker til jer alle for oplysningen. Så må jeg vel trøste mig med at
jeg trods alt selv fandt på det

Gik ellers i gang med at implementere en template pointer klasse her i
weekenden. Der var refrence counting og delete når ingen brugte den ect ect.
Fiks lille ting, men ville have været mere fiks hvis det var noget heeelt
nyt.



Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408458
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste