... please wait while loading ...

To view the complete site without permanently having to scroll, your browser-window should be maximized to support your screen-resolution of .
it
Nienhagen
  1.568.921 Nedstat Basic - Kostenlose web site statistiken Persönliche Homepage webseite Zähler
Kostenlose Zähler
In memoriam C-BIT Information-Center Hannover (2.241/1075+2.241/1076 - no longer active)
Suchmaschinen-Optimierung DDpa.net  - Pagerank Anzeige ohne Toolbar Free webspace Blog Linktausch Rank http://www.suchmaschinen-ranking-hits.de: Mini-Buttons mit dem GooglePageRank Ihrer Website für Ihre Website!
Sicherheitshinweis: Wir weisen vorsorglich darauf hin, dass wir bei der Anmeldung saemtliche automatisch uebermittelten Parameter wie IP-Adresse und/oder Einwahlrufnummer speichern, um uns und unsere Kunden vor Missbrauch zu schuetzen. Selbstverstaendlich werden wir bei Bedarf umgehend strafrechtliche Massnahmen ergreifen, um einen vorliegenden Missbrauch zu ahnden.

Verwalten von Speicher mit Calloc() und Malloc()

ACHTUNG: Der folgende Knowledge Base Artikel wurde durch ein maschinelles Übersetzungssystem ohne jegliche menschliche Mitwirkung übersetzt. Microsoft stellt diese Artikel deutschsprachigen Benutzern, die der englischen Sprache nicht mächtig sind, als Hilfe zur Verfügung, damit diese den Inhalt dieser Artikel verstehen können. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Artikel-ID:10758
Geändert am:Montag, 1. Dezember 2003
Version:3.0
In einer Anwendung, die die entwickelt wird, wenn das große Speichermodell verwendet, scheint die Calloc()- und die Malloc()-Funktion große Speicherblöcke zu verlieren, wenn sich der Segmentwert einer Zuordnung ändert. Falls eine Anwendung zwei 16 KB-Speicherblock anfordert und der Segmentwert des zweiten Zeigers unterschiedlich von dem Segmentwert des ersten Zeigers ist, ist der Unterschied zwischen den Zeigern beispielsweise ca. 24,000 Byte.

Dieses Verhalten wird von der Methode verursacht, die die Malloc()-Funktion zu Ausführung von Speicherzuordnungen verwendet. Die Malloc()-Funktion wird optimiert, um große Anzahl der (vergleichsweise) kleinen Speicherzuordnungen sehr schnell zu verarbeiten. Die Malloc()-Funktion reserviert von MS-DOS einen große Block Speicher (8 KB hat die Standardgröße) und aus dem Block Speicher reserviert, bis der Speicherplatz auf es erschöpft ist. Wenn eine Anwendung größer als 8 KB ist kann einen zusätzliche 8 KB-Block Speicher bei Malloc() reservieren und Teil des Blocks zu dem Erfüllen der Zuordnung verwandt werden. Wenn die nächste Anforderung nicht in dem Speicherplatz passt, der in einem bestimmten Segment verbleibt, muss ein weiteres Segment Malloc() anfordern. Fast 8 KB der vorherigen Reservierung jenseits des letzten Byte ist die neue Zuordnung in dem oben bestimmten Beispiel.

Eine Anwendung den Umfang kann reduzieren Malloc() aus verschwandtem Leerzeichen, indem die Größe des Speicherblocks reduziert, reserviert, indem Malloc() den Wert des _amblksiz-Wert ändert. Enthalten Sie die folgende Deklaration in Ihrer Anwendung:
   extern unsigned int _amblksiz;
		
Legen Sie _amblksiz auf dem gewünschten Wert fest. Kleinere Werte von _amblksiz verschwenden weniger Platz auf Kosten von geringerer Leistung von Malloc(). Wenn eine Anwendung große Speicherblöcke zuweist tendiert jedoch, Malloc() wenig aufzurufen, und der Leistungsabfall ist jedoch minimal. Ohne seine Leistung deutlich zu beeinträchtigen, reduzierte das Setzen von _amblksiz auf 2 in einem Testprogramm den Raumverlust auf 42 Byte.

Die Informationen in diesem Artikel beziehen sich auf:
 The C Run-Time (CRT), wenn verwendet mit:
  Microsoft C Professional Development System 5.1
  Microsoft C Professional Development System 6.0
  Microsoft C Professional Development System 6.0a
  Microsoft C Professional Development System 6.0a
  Microsoft C Professional Development System 5.1
  Microsoft C Professional Development System 6.0
  Microsoft C Professional Development System 6.0a
  Microsoft C/C++ Professional Development System 7.0
  Microsoft Visual C++ 1.0 Professional Edition
  Microsoft Visual C++ 1.5 Professional Edition

Zum Anfang

Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.


This mirror is sponsored by:
Hansjoerg G. Henker
A-Z Consulting & Development
[538]

Information-Center [21.11.2008 10:12:05]