Nej, området den pegede på er \"frigivet\" til andet brug, men ikke taget i brug - sandsynligvis, og det vil aldrig give fejl at skrive i et område i lageret indenfor din process. Jeg kan ikke huske om ptr bliver NULLet efter brug, men det tror jeg nu ikke. Kører dit program længe, vil du derimod få mystiske \"logiske\" fejl.
Det er præcis den svaghed i C/C++ som man har forsøgt at løse i Java, ved at lave det pointer-løst.
Teoritisk set må man kunne helt udelade at de-allokere, men i så fald vil der opstå memory leaks. I mit tilfælde vil det være ligegyldigt om der står memory leaks fordi det er relativt sjældent at jeg får brug for at deallokere.
Du skal \"bare\" sørge for at vide hvad der er i dine pointere, og ikke bruge en \"dangling reference\", altså f.eks. skrive i et netop frigivet område. Man bør programmere pænt, for at opnå dette. Eller selvfølgelig bare lade være med at deallokere - kører programmet ikke særligt længe med små data, er det endda sikkert en anelse hurtigere :=)
Mange tak. Jeg kan fortælle dig at der er værktøjer til at checke om man gør det ordentligt - jeg kender ikke lige nogen på stående fod. I gamle dage, da jeg var med til et større projekt i C, lavede vi nogle makroer til malloc og free, der skrev på en logfil. Her kom adressen i lageret til at stå, og efterfølgende kunne man så - med et lille Perl-program - løbe igennem og se om man manglede at frigive noget, eller andre ting der var galt. Vores mål, at alt blev ryddet op, perfekt, lykkedes jo så til sidst. I produktionsversionen blev disse tests fjernet, men kunne sættes ind igen med en ændring på én linie. Ja, se det var tider ...:)
Programmet Bounds Checker fra NuMega kan håndtere stort set al form for memory check...
=>erikjacobsen Du skriver i et indlæg: \"og det vil aldrig give fejl at skrive i et område i lageret indenfor din process.\" Er det hvad der sker med malloc? I C++, allokeres hukommelse med \'new\' jo på heap\'en.
Det er det samme med malloc. Den er mere \"primitiv\", da man selv skal be\' om den rigtige størrelse - men hvad, så har man jo styr på det.
Synes godt om
Ny brugerNybegynder
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.