---
title: "När uppstår resursläckage?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/45989-när-uppstår-resursläckage"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Bratte"
published: "2002-06-15T21:58:52.000Z"
updated: "2002-07-05T12:02:34.000Z"
replies: 9
views: 283
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/45989-när-uppstår-resursläckage"
---

# När uppstår resursläckage?

## #1 — Bratte, 2002-06-15T21:58Z

Om jag allokerar en resurs (tex SelectObject(dc,MyPen)) inne i en frekvent upprepad "Window Message" (tex WM_PAINT) måste jag då frigöra resursen med "DeleteObject" innan jag returnerar. Eller räcker det att jag frigör resurserna när jag stänger applikationen(i WM_CLOSE/WM_DESTROY) för att inte ett resursläckage ska uppstå?

Permalänk: https://www.webforum.nu/p/45989

## #2 — Fridolf, 2002-06-16T15:08Z

Frigör resurserna innan du returnerar. Ett tips är att kapsla in all sådan resursallokering i klasser som gör "SelectObject" i konstruktorn och "DeleteObject" i destruktorn. Då räcker det med att skapa ett sådant objekt inne i det kodblock eller den funktion som utförs/anropas när WM_PAINT skickas och sedan faller det ut ur "scope" och resursen frigörs "av sig själv".

Permalänk: https://www.webforum.nu/p/698462

## #3 — Beatbox, 2002-07-02T11:28Z

Jag tycker det låter extremt farligt att allokera saker i en messagehandler, speciellt en som anropas hur många gånger som helst.

Permalänk: https://www.webforum.nu/p/712136

## #4 — Fridolf, 2002-07-03T10:47Z

Och faran är...?

Permalänk: https://www.webforum.nu/p/712575

## #5 — PeW, 2002-07-03T14:12Z

Faran ligger väl i programmeringsstilen som lätt genererar svårhittade fel. Speciellt viktigt när man jobbar i större projekt då kanske andra sitter och jobbar med ens kod. Kodning "ska" ju generellt sett utföras på ett sätt som minimerar riskerna.

Permalänk: https://www.webforum.nu/p/712692

## #6 — Beatbox, 2002-07-03T14:24Z

Faran är att allokering tar tid och WM_PAINT kommer i massor så fort man ens rör musen över fönstret. Generellt sett så ska man försöka göra så lite som möjligt i eventhandlers, speciellt VM_PAINT.

Permalänk: https://www.webforum.nu/p/712698

## #7 — Marcus E, 2002-07-03T14:31Z

Frigör man allt man allokerar så är det nog inga större problem. Allting i ett Windows-program styrs ifrån event-handlers. Skulle man förbjudas att allokera något i dem blir det väldigt svårt att skriva ett program.

Att allokera minne tar inte alls så lång tid. Med dagens snabba datorer kan du allokera extremt många gånger innan det blir märkbart.

Detta är mina erfarenheter.

Permalänk: https://www.webforum.nu/p/712703

## #8 — Beatbox, 2002-07-03T14:39Z

Man ska minimera tiden i eventhandlern. Det är tom en rekommendation utfärdad av Microsoft själva. Man kan ju få andra störningar som gör att man inte avallokerar resurserna korrekt. I windows är det ju inte enbart frågan av minne. Det kan vara handles till fönster, menyer, filer etc. Man får extremt svårdebuggade fel då man får slut på resurser. T ex så kan man få upp menyer utan text etc.

Permalänk: https://www.webforum.nu/p/712707

## #9 — Bratte, 2002-07-05T11:45Z

Om jag inte misstar mig så uppdateras inte WM_PAINT eller de andra WindowsMessage-erna så fruktansvärt ofta i förhållande till datrorns klockfrekvens, som några av de ovanstående skribenterna antyder. Sedan är väl et ganska centralt prejudikat i C++ att man ska nestla sina variabler, jag kan inte förstå varför denna regel inte skulle gälla här.

Permalänk: https://www.webforum.nu/p/713586

## #10 — Beatbox, 2002-07-05T12:02Z

Kolla med verktyget Spy+ så ser du uppdateringen. Man får meddelandet så fort man för musen över fönsteret, så fort man rör på fönstret, så fort något annat fönster överlappar. Dvs rätt så ofta. Sätt en brytpunkt i eventhandlern så ser du att man kommer dit så fort nått som har med att fönstret ska ritas om inträffar.

Permalänk: https://www.webforum.nu/p/713597

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/45989-när-uppstår-resursläckage
