[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] [C++]heap allokering?



Bo Simonsen <sslug@sslug> writes:

> Lyder absurt, hvordan kan du vurdere at hukommelsen ikke bliver
> frigivet.. Du kan muligvis stadig få fat i hukommelses området med de
> samme data som der var før free(), men det free() gør at den slette det
> memory område i Operativ systemet memory tabel, ergo ved OS'et den kan
> bruge memory området igen.

Det er faktisk ikke normalt at free frigiver hukommelse direkte til
styresystemet (altså kernen). Oftest vil malloc/free vedligeholde en
intern heap og kun under visse forhold vil denne heap blive trimmet.

Det kan nemlig være relativt dyrt at bede kernen om mere eller
mindre hukommelse, derfor forsøger man ikke at gøre det for tit.

> (Jeg mener ikke malloc er et system kald direkte til kernel, jeg mener
> man skal igennem nogle andre funktioner).

I glibc bliver store blokke allokeret med mmap og mindre bidder fra en
heap hvis størelse ændres med sbrk. 

> Men tænk på hvor mange programmer der bruger malloc/free, så jeg tendere
> mere til det må være en programmeringsfejl i dit software desværre.

Når man programmerer embedded systemer uden en MMU må man være
forberedt på at hugge en hæl og skære en tå i forbindelse med
hukommelsesstyring.

Det lyder ikke usandsynligt at MicroBlaze af performancehensyn bare
lader free være en noop.

-- 
 Peter Makholm     |                                              What if:
 sslug@sslug |     IBM bought Xenix from Microsoft instead of buying
 http://hacking.dk |                                                  DOS?


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:44 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *