Myśląc w szczególności o C++ w systemie Windows przy użyciu najnowszego kompilatora Visual Studio C++, zastanawiam się nad implementacją sterty:Czy istnieje obciążenie pamięci związane z alokacją pamięci sterty (np. Znaczniki w stercie)?
Zakładając, że używam kompilatora wydania i nie chodzi mi o fragmentację/pakowanie pamięci problemy, czy istnieje obciążenie pamięci związane z przydzielaniem pamięci na stercie? Jeśli tak, to z grubsza ile bajtów na przydział może to być? Czy byłby większy w 64-bitowym kodzie niż w wersji 32-bitowej?
Nie wiem zbyt wiele o nowoczesnych implementacjach sterty, ale zastanawiam się, czy istnieją znaczniki zapisane w stercie przy każdej alokacji, czy też jakaś tabela jest utrzymywana (jak tablica alokacji plików).
W powiązanym punkcie (ponieważ myślę przede wszystkim o funkcjach biblioteki standardowej, takich jak "map"), implementacja biblioteki standardowej firmy Microsoft używa w dowolnym momencie własnego przydziału (dla takich elementów, jak węzły drzewa) w celu optymalizacji kupy stosowanie?
Zazwyczaj podczas przydzielania tablic niektóre bajty są przechowywane na początku z rozmiarem przydzielonym do przyszłych usunięć. W przypadku dużych alokacji, narzut jest bliski zeru. Jeśli przydzielisz, powiedzmy, 4 bajty na raz, może bardzo dobrze podwoić pamięć. –