[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?



Anders Hellerup Madsen wrote:
Hej,

Jeg har et system hvor standard malloc() og free() funktionerne ikke fungerer ordenligt. Hukommelsen bliver fint allokeret med malloc(), men free() frigiver ikke noget. Det vil altså sige, at hvis man dynamisk allokerer hukommelse, så vil man uundgåeligt ramme panden mod muren på et tidspunkt.

Hvorfra ved du, at free() ikke frigiver hukommelsen?



Jeg forestiller mig ikke det er specielt besværligt og lave nogen funktioner der allokerer en ordenlig bunke heap, og så deler hukommelse ud i mindre bunker alt efter behov, f.eks. en heap_alloc() og heap_free() funktion der virker ligesom malloc() og free().


Problemet kommer når jeg har lyst til at bruge funktionerne til at allokere plads til c++ objekter, altså som en slags erstatning for new og delete. Kan det overhovedet lade sig gøre?

Umiddelbart vil jeg forvente at new er en allokering + initialisering (jeg har dog ikke meget kendskab til c++).

Jeg forestiller mig at new og delete bruger malloc() og free() til at reservere hukommelse, men jeg har ikke andet og have det i end at sådan ser det ud. Systemet er et indlejret system bygget op på en Xilinx FPGA og med en Xilinx MicroBlaze CPU. Det defekte C library er et GNU C/C++ library Xilinx har porteret til at kunne køre på deres system.



GNU C/C++ er open source, så er det ikke nemmere at fixe en eventuel fejl, i stedet for at lave mærkelige work-arounds?


Jeg undskylder, at det ikke har specielt meget med Linux at gøre, men jeg håber der er nogen der kan være mig behjælpelige. Evt. bare med et svar hen af "Det kan ikke lade sig gøre", for så kan jeg i det mindste komme til, at bruge min tid til noget andet.

Hilsen Anders

Med venlig hilsen Egon Andersen


 
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] *