Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 19.02.2008, 21:58 Titel: Größe eines Puffers ermitteln |
|
|
Schon wieder eine Anfängerfrage - sorry, aber weder in der Hilfe noch im Forum hab ich die passende Antwort gefunden.
Also Speicherplatz zu allokieren ist ja kein Thema, aber wenn man einen Speicherplatz unbekannter Größe hat - wie bekommt man denn die Größe eines Puffers heraus? Gibts sowas wie MemorySize() ? _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 19.02.2008, 22:04 Titel: |
|
|
Ein Buffer ist ein Array oder(nein, war nicht böse gemeint, weiß es selbtst nicht so genau)?
Wen das so ist, dann kannst du mit UBOUND das letzte Element und somit die Größe feststellen. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.02.2008, 22:11 Titel: |
|
|
ein puffer ist fortlaufender speicher...
ich erstelle puffer normalerweise als strings mit fester länge, kommt aber ganz aufs anwendungsgebiet an - was willst du denn machen? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 19.02.2008, 22:14 Titel: |
|
|
Naja wenns ein String ist gehts ja ganz einfach.
Code: | groesse = len(puffer) |
Warum bin ich heute so hilfsbereit? |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 19.02.2008, 22:17 Titel: |
|
|
Ok, dann frag ich mal anders - war vielleicht blöd ausgedrückt.
Wenn ich z.B. ein Bild lade (fbpng), dann kann ich natürlich berechnen wie groß der belegte Speicher - Puffer - ist. Allerdings ist dieser Puffer ja auch fest reserviert, ergo muß sich doch die Größe auch einfach ermitteln lassen.
Anderes Beispiel: Wenn ich per Allocate eine bestimmte Größe Speicher reserviere, muß das System ja auch wissen das es eben diesen Speicher nicht überschreiben darf. Dies kann es nur wenn es auch die größe kennt - fortlaufend hin oder her. Daher gibt es in den meisten Programmiersprachen sowas wie MemorySize() oder BankSize oder sonstwas um die Größe von Puffern oder auch Speicherbereichen zu ermitteln.
Ich wüsste halt gerne ob es sowas auch in FB gibt. Benötigen würde ich es insbesondere für den letzteren Sachverhalt um das Vorhandensein eines Speicherbereichs, genauer dessen Größe, überprüfen zu können wenn dieser als Pointer an mein Programm (später DLL) übergeben wird.
Zu kompliziert der Satz??? _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.02.2008, 22:27 Titel: |
|
|
ich weiß nicht, aber könnte SizeOf() hier ein ansatz sein? Hab die funktion nicht bei alloziertem speicehr probiert, aber ein versuch ist es wert... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 19.02.2008, 22:35 Titel: |
|
|
Das gibt leider nur 4 zurück, ich vermute mal die Größe der Variable in Bytes  _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 19.02.2008, 23:03 Titel: |
|
|
Hi,
leider gibt es keine Möglichkeit (mir ist jedenfalls keine bekannt) um die Größe des reservierten Speichers auszulesen.
FB benutzt bei 'Allocate' die C-Funktion 'malloc' und für deren Speicherverwaltung gilt:
Zitat: | Internes
Die Speicherverwaltung merkt sich die Größe eines jeden Speicherblocks, der von Ihnen angefordert wurde – daher ist es auch nicht nötig, die Größe des Blocks (als echte Bytegröße) anzugeben, um den Speicher mit free() wieder freizugeben. Leider gibt es daher allerdings auch keinen portablen Weg, zu erfahren, wie groß dieser Speicherblock denn tatsächlich ist. | http://www.hs-augsburg.de/~sandman/c_von_a_bis_z/c_016_004.htm#RxxobKap016004040029481F04718C _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 19.02.2008, 23:10 Titel: |
|
|
Mmmhhh...scheint mir aber noch ne Lücke in FB zu sein, naja, kann man nix machen.
Vielen Dank aber für die Hilfe _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
|