Co znajduje się w bibliotece stdc++

Forum pasjonatów mikrokontrolerów ARM.
ODPOWIEDZ
Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Co znajduje się w bibliotece stdc++

Post autor: Koppel » 12 sie 2007, 13:17

Witam
Piszę właśnie spory program na procesor ARM7, który chciałem przenieść pod C++. Jednak okazuje się, że po dołączeniu biblioteki standardowej języka C++ rozmiar wynikowego kodu rośnie o około 40kB. To sporo, biorąc pod uwagę, że mam około 200kB miejsca na cały program.

Postanowiłem więc wyłączyć bibliotekę stdc++. Moje pytanie brzmi: jakie nakłada to ograniczenia na pisany kod? Znalazłem już informację, że nie będę mógł korzystać z komponentów stl oraz operatorów new i delete. To mi nie przeszkadza, ponieważ, tam gdzie to potrzebne, implementuję własne "bezpieczne" algorytmy zarządzania pamięcią przydzielaną dynamicznie.

Czy będę miał jakieś inne ważne ograniczenia? To jest jeszcze chwila gdzie mogę jednak wrócić do pisania kodu w czystym C.

Dodano:
Właśnie wypraktykowałem, że bez stdc++ nie działają konstruktory i destruktory. To sprawia, że raczej skupię się na C. Może ktoś zna jakieś "okrojone" wersje biblioteki stdc++ dla procesorów ARM?

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 12 sie 2007, 15:34

Podobna sytuacja pojawia się kiedy pisze się własny system operacyjny i chce się zastosować C++, a biblioteki standardowej nie ma. Z tego co wiem trzeba zdefiniować własne operatory new i delete, w najprostszym przypadku można podpiąć pod malloc() i free(). Niestety nie mam pojęcia jak to zrobić :(

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 13 sie 2007, 8:23

Guzer pisze:Z tego co wiem trzeba zdefiniować własne operatory new i delete, w najprostszym przypadku można podpiąć pod malloc() i free().
Tylko, że samych operatorów new i delete nie potrzebuję. Obiekty chciałem tworzyć statycznie. W takim przypadku jednak konstruktory także nie były wywoływane. Może da się to jakoś obejść? To jedyne czego mi brakowało.

Pytam teraz bardziej z ciekawości, ponieważ postanowiłem pisać kod w C.

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 13 sie 2007, 13:01

Zazwyczaj wywoływaniem konstruktorów/destruktorów zajmują się właśnie new/delete. Prawdopodobnie te operatory są po cichu wywoływane w tle nawet jeżeli tworzy/niszczy się obiekt bez ich użycia.

ODPOWIEDZ