kostenloser Webspace werbefrei: lima-city


RAM-Größe ermitteln in C

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    kozak

    Kostenloser Webspace von kozak

    kozak hat kostenlosen Webspace.

    Ich schreibe eine kleine Konsolenanwendung, wo u.a. auch Kopieren (mit Zwischenspeichern) einiger Dateien erlaubt ist.
    Der Kopiervorgang wird mit Hilfe von stat() und malloc() realisiert.
    Mit stat() ermittle ich die Größe der Quelldatei und mit malloc() allokiere ich einen Speicherbereich in der Größe der Quelldatei. Problem dabei ist, dass wenn die Quelldatei die Größe des Hauptspeichers überschreitet.
    Gibt es in C (bin kein eingefleischter C-Programmierer) Standard-Bibliotheken, wo es eine func den passenden Rückgabewert (bin von Java etwas verwöhnt, wo es beinahe zu allem eine "get" Methode gibt) liefert oder muss man sich da was selbst zusammenbauen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Hast du einen wichtigen Grund warum du die Quelldatei vollständig in den Arbeitsspeicher laden musst? Normalerweise würde man in kleinen Blöcken (z.B. 1024 Bytes) von der Quelldatei lesen und dann in die Zieldatei schreiben und das ganze natürlich in einer Schleife, sodass am Ende die gesamte Datei kopiert wurde.

    Falls du wirklich auf das Abfragen des zur Verfügung stehenden Speichers bestehst könnte dir das weiterhelfen: *klick*
  4. Autor dieses Themas

    kozak

    Kostenloser Webspace von kozak

    kozak hat kostenlosen Webspace.

    hackyourlife schrieb:
    Hast du einen wichtigen Grund ... []

    Ja, das hat einen Grund.
    Es geht um Optimierung beim Kopieren.
    Ich habe, oder besser gesagt, der User hat im Endeffekt 3 Varianten zur Auswahl.
    1. Blockweises Kopieren
    2. Kopieren mit Zwischenspeichern
    3. und unter Verwendung eines Speichabbilds
    Nach dem Kopiervorgang wird jeweils die Zeit ermittelt und bla bla bla. Eigtl irrelevant für das vorliegende Problem.

    Die ertse Variante - Blockweises kopieren, die du bereits erwähnt hast, habe ich umsetzten können. Dem User wird die Möglichkeit von Angabe der Blöckgröße (256, 512, 1024 Bytes etc.) bereitgestellt.
    Bei der 2. Methode habe ich bisher einfach einen fixen Wert genommen und diesen als "MaxRamSize" gesetzt. Aber das ist nicht der Sinn der Sache. Deswegen die Frage.

    Danke für den Link. Werde mal durchlesen.
  5. was hälst du davon?
    https://www.c-plusplus.net/forum/108479-full
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!