MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | SYNOPSIS |
| 2 | mapping m_allocate(int size) |
| 3 | mapping m_allocate(int size, int width) |
| 4 | |
| 5 | BESCHREIBUNG |
| 6 | Die Funktion reserviert Speicher fuer ein Mapping. <size> ist die |
| 7 | Anzahl Eintraege (d.h. die Anzahl Keys), <width> ist die Anzahl |
| 8 | Dateneintraege pro Key. Wird <width> nicht angegeben, werden Keys |
| 9 | mit einem Datenelement erzeugt. |
| 10 | |
| 11 | Die Funktion ist nur sinnvoll, wenn man ein Mapping erzeugt, dessen |
| 12 | ungefaehre Groesse von vornherein bekannt ist, um so den Overhead |
| 13 | von wiederholten Speicherallokation zu minimieren. Wenn nicht alle |
| 14 | allozierten Datenelemente mit Daten bestueckt werden, werden die |
| 15 | Ueberbleibsel einige Zeit spaeter bei Gelegenheit wieder freigegeben |
| 16 | (s. Bemerkungen). |
| 17 | m_allocate() ist auch nuetzlich, wenn ein Mapping bestimmter Breite |
| 18 | erzeugt werden soll, ohne bereits die Daten zu den Keys bereit zu |
| 19 | stellen. |
| 20 | |
| 21 | Wenn bloss ein leeres Mapping bestimmter Breite erzeugt werden soll, |
| 22 | so kann folgende Notation verwendet werden: |
| 23 | |
| 24 | ([ ]) : erzeugt ein leeres Mapping mit Breite 1. |
| 25 | ([:<width>]) : erzeugt ein leeres Mapping der Breite <width>, |
| 26 | wobei <width> eine beliebige Anweisung sein kann, die eine |
| 27 | Integerzahl zurueck liefert. Tatsaechlich wird diese Notation |
| 28 | als 'm_allocate(0, <width>)' kompiliert. |
| 29 | |
| 30 | BEISPIELE |
| 31 | m_allocate(3,7) -> erzeugt ein Mapping mit 7 Werten pro Key und Platz |
| 32 | fuer 3 Eintraege. |
| 33 | ([:2*3]) -> entspricht m_allocate(0,6). |
| 34 | |
| 35 | BEMERKUNGEN |
| 36 | Ungenutzer Speicher des allozierten Mappins wird waehrend des sog. |
| 37 | Kompaktierens des Mappings freigegeben. Dies passiert waehrend eines |
| 38 | "data cleanups" oder einer "garbage collection". Die Zeit zwischen |
| 39 | "data cleanups" ist mit configure_driver() konfigurierbar. |
| 40 | |
| 41 | GESCHICHTE |
| 42 | Umbenannt von allocate_mapping() in LDMud 3.2.6. |
| 43 | Die ([:<width>]) Notation wurde in 3.2.9 eingefuehrt. |
| 44 | |
| 45 | SIEHE AUCH |
| 46 | mappings(LPC), walk_mapping(E), get_type_info(E), m_reallocate(E) |