Forum: Mikrocontroller und Digitale Elektronik Stringarray allokieren und deallokieren


von Michael (k-mte)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe auf einem Raspberry Pi Speicher für einen mehrseitigen Text 
allokiert und deallokiert. Das Ergebnis habe ich mit /proc/mem in der 
Erwartung überprüft, dass der zur Verfügung stehende Speicherplatz beim 
Allokieren um einen gewissen Betrag weniger und beim Deallokieren wieder 
mehr geworden ist. Nach einem kompletten Zyklus von Allokieren und 
Deallokieren habe ich eigentlich erwartet, wieder auf demselben Betrag 
an freiem Speicher rauskommen, mit dem ich angefangen habe. Leider ist 
dem nicht so. Das von /proc/mem angezeigte scheint eher zufällig zu sein 
und in keinem Kausalzusammenhang mit meinem Allokieren / Deallokieren zu 
stehen. Was mache ich falsch?

: Bearbeitet durch User
von Jens G. (jensig)


Lesenswert?

Michael schrieb:
> dem nicht so. Das von /proc/mem angezeigte scheint eher zufällig zu sein

/proc/mem ist wohl daselbe wie /proc/meminfo auf einem Ubuntu-System. 
Und damit vermisst Du leider global das Gesamtsystem, und nicht nur das, 
was Dein Programm macht. Da spuckt Dir also alles mögliche in die Suppe, 
was auf dem Ding läuft ...
Du musst also /proc/<pid>/mem auslesen, damit Du nur Deinen Prozess 
siehst ...

Edit: /proc/<pid>/mem scheint bei mir nix auszugeben. Naja, muss man 
wohl doch anders abfragen. Z.B. "ps aux" -> VSZ ...

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

man 5 proc_pid_statm
man 5 proc_pid_status
könnten helfen.
Edit:
Man darf auch direkt im Programm ausgeben, ohne externe tools.
1
#!/usr/bin/python3
2
# vim: fileencoding=utf-8: ts=4: sw=4: expandtab:
3
import os
4
with open(f'/proc/{os.getpid()}/status') as fr:
5
    for line in fr.readlines():
6
        print(line,end='')

: Bearbeitet durch User
von G. K. (zumsel)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.