Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

"new char[x]" alokuje zbyt dużo pamięci

Ostatnio zmodyfikowano 2014-10-12 22:12
Autor Wiadomość
pekfos
» 2014-10-12 11:02:33
Jak byś użył std::vector to byś dostał wyjątek out_of_range.
Ale tylko przy dobieraniu się do elementów przez at() ;)
P-118320
Elaine
» 2014-10-12 17:55:56
System Windows/Unix przydziela zazwyczaj nie mniej niż krotność 4 bajtów
Na typowych platformach to bardziej wielokrotności czterech lub ośmiu kilobajtów, i wszelki podział na mniejsze bloki jest już dokonowany przez sam program, system się do tego nie wtrąca. Oczywiście może się wydawać, że to system, bo systemy zazwyczaj mają jakąś domyślną implementację malloc, ale to jest zwyczajny kod trybu użytkownika i nic nie stoi na przeszkodzie, by całkiem to olać i użyć własnej implementacji, która zamiast wyrównywać rozmiary bloków do ośmiu lub szesnastu bajtów nie będzie wyrównywać ich wcale.

Jakby kogoś ciekawiło, jak się takie rzeczy robi, to gdzieś na dysku mam jedną całkiem przyzwoitą implementację malloc (no, prawie, interfejs free się nieco różni) w ~300 liniach C++, mogę ją wrzucić i opisać.
P-118363
DejaVu
» 2014-10-12 21:53:53
Mnie by interesowało :P
P-118370
ison
» 2014-10-12 22:12:26
Mnie również.
P-118372
1 « 2 »
Poprzednia strona Strona 2 z 2