Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Speicherbelegung Ende-Anfang

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 15.09.2008, 14:08    Titel: Speicherbelegung Ende-Anfang Antworten mit Zitat

Warum ist der Wert der am Ende ausgegeben wird nicht gleich dem Anfangswert?

Code:

type memblock
    allocated(1 to 262143) as uinteger
    nx_block as memblock ptr
end type

dim smem as double

dim sblock as memblock ptr
dim ablock as memblock ptr

cls

smem = fre
print "Start:   " & fre
sleep 5000
while fre >= smem /2
    if ablock = 0 then
        ablock = new memblock
        sblock = ablock
    else
        ablock->nx_block = new memblock
        ablock = ablock->nx_block
    end if
wend
print "Filled:  " & fre
sleep 5000
ablock = sblock
while ablock <> 0
    sblock = ablock->nx_block
    delete ablock
    ablock = sblock
wend
print "Deleted: " & fre
sleep


Bei mir kommt eine Differenz von 1691648 byte raus die ich nicht zuordnen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.09.2008, 15:07    Titel: Antworten mit Zitat

ich bekomme hier mehr oder weniger zufällig werde, und weiste auch warum? Windows ist kein Singletasking-System, das heißt, du kannst nicht vorhersehen, wieviel RAM wann benötigt wird? Ich habe das Programm provoziert und im Hintergrund noch ein paar Anwendungen gestartet und schon kamen völlig andere Werte raus... Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 15.09.2008, 15:18    Titel: Antworten mit Zitat

Ach, du meinst das es wegen den im hintergrund laufenden Programme zu diesen veränderungen kommt hmm.... schade das man von FB aus das eigene Programm nicht mit "Realtime"-Priorität starten kann...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 15.09.2008, 15:52    Titel: Antworten mit Zitat

Code:

#Include "windows.bi"

SetPriorityClass(REALTIME_PRIORITY_CLASS)



...oder so ähnlich^^

Man kann aber auch nen eigenen M(emory)M(anager) einsetzten:
Per #UnDef Allocate und DeAllocate löschen, und Funktionen mit denselben Parametern anlegen, die per malloc() und free() sich um den Rest kümmern...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 15.09.2008, 17:19    Titel: Antworten mit Zitat

Hm.. Wissenswerter befehl!!! *notier*

Gibt es sowas auch Plattformunabhängig? Bin ja eigentlich lieber ein linux-progger...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 15.09.2008, 17:21    Titel: Antworten mit Zitat

Ach habs mal grade ausprobiert:

C:/Programme/FreeBASIC/FreeBasic/FBIDETEMP.bas(3) warning 1(1): Passing scalar as pointer, at parameter 1 of SETPRIORITYCLASS()
C:/Programme/FreeBASIC/FreeBasic/FBIDETEMP.bas(3) error 1: Argument count mismatch in 'SetPriorityClass(REALTIME_PRIORITY_CLASS)'

Da klappt was nich.. kanns sein das da noch mehr parameter mit übergeben werden müssen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 15.09.2008, 17:57    Titel: Antworten mit Zitat

Wie viele und welche Parameter du brauchst, steht doch in der windows.bi drin.
(denk ich mal, ich hab sowas nicht happy)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 15.09.2008, 18:13    Titel: Antworten mit Zitat

SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS) sry vergessen^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 17.09.2008, 15:27    Titel: Antworten mit Zitat

@28398: Okay.. hmm.. nur das setzt die priorität des programms "nur" auf "Hoch" und noch nicht auf Realtime.. gibt es da noch einen anderen parameter?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 17.09.2008, 16:27    Titel: Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
@28398: Okay.. hmm.. nur das setzt die priorität des programms "nur" auf "Hoch" und noch nicht auf Realtime.. gibt es da noch einen anderen parameter?



OMG

[zitat]SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)[/zitat]

Das absolute Maximum ist das hier:
Code:
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)
   SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL)


Aber ACHTUNG:
Das kann zur Folge haben, dass bspw. die Daten aus dem Festplattencache nicht mehr geschrieben werden, wenn das Programm sich in diesem Modus befindet, und sich dann aufhängt, ist der PC nicht mehr ohne Kaltstart zu irgendwas zu bewegen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 17.09.2008, 17:12    Titel: Antworten mit Zitat

Klingt schon besser zwinkern THX!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz