Deutsch
C ++ Forum

Bug oder nicht Bug das ist die Frage...

 

Michael
Dell
Bei folgender Source bin ich überfragt worans liegt, jedenfalls läufts in Profan ab v7.6 wärend Profan2Cpp fehlerwerte liefert (alle Versionen) je nach Compiler sind die Fehlerwerte sogar unterschiedlich. Oder hab ich da vieleicht nen Fehler drin?
KompilierenMarkierenSeparieren
!Proc GetFreeMem  Gibt Freien RAM Speicher zurück (- (2-4Mb))
Def GlobMemStat(1) !"KERNEL32.DLL","GlobalMemoryStatus"
Declare MemStat#,ret&
Dim MemStat#,32
Long MemStat#,0 = 32
GlobMemStat(MemStat#)
ret& = Long(MemStat#,29)
Case (ret& > (8 * $0100000)): ret& = (ret& - $0200000)
ret& = (ret& - $0200000)
Dispose MemStat#
Return ret&

EndProc

Print Str$(Int(GetFreeMem() / (1024 * 1024)))
WaitInput
End

309 kB
Kurzbeschreibung: __Demos__
Hochgeladen:11.12.2006
Ladeanzahl58
Herunterladen
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
11.12.2006  
 




Sebastian
König
Hallo Michael,

sehr seltsam - bei liefert der Code sogar im XProfan 10-Interpreter ein anderes Ergebnis als die Profan 7.6-Exe aus den Archiv... Ich melde mich wieder, sobald ich etwas herausgefunden habe.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.12.2006  
 




Sebastian
König
Zwei Dinge sind mir aufgefallen:

1. Gibt GetMemoryStatus() seit XProfan 8.0 und auch mit Profan2Cpp einen Fehlercode zurück - dass sich dann mehr oder weniger zufällige Werte ergeben, ist klar...

2. Sollte der Wert an Offset 28 ausgelesen werden, aber wenn der API-Aufruf schon nicht funktioniert, ist das erstmal nebensächlich.

Was ich leider noch nicht herausfinden konnte ist, warum der API-Aufruf fehlschlägt...

EDIT: Ich sehe gerade: This function does not return a value. - das macht die Sache noch undurchsichtiger. Mit Profan 7.6 ist der Rückgabewert 0, mit späteren Versionen dann etwas, das sehr nach einem Fehlercode aussieht...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.12.2006  
 




Sebastian
König
Ok, ich denke, ich habe eine Erklärung:

Was Du abfragst, ist das Attribut dwAvailVirtual aus der Struktur. Dazu steht als Beschreibung in der Dokumentation: [quote:146fd6843f=MSDN]Indicates the number of bytes of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process.[/quote:146fd6843f]
Das erklärt wohl, warum die Werte so unterschiedlich sind - es kommt ganz auf den Prozess an, also auch darauf, wie und womit die Exe-Datei erstellt wurde und in welchen Zustand sich das Programm zum Zeitpunkt des Aufrufs befindet.

Ich vermute mal, Du bist eher an dwAvailPhys interessiert, das wäre dann Offset 12 Bei mir sind damit die Werte dann in allen Varianten auch im Rahmen der Schwankung um einige MB identisch...

Das mit dem Rückgabewert ist vermutlich Zufall.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.12.2006  
 




Michael
Dell
Funktioniert besten, vielen Dank!!!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
11.12.2006  
 



Hallo ihr beiden...

Nur zur Info:
Commited = virtueller Speicher, der einem realen Speicher zugewiesen wurde
Reserved = als belegt markierter virtueller Speicher, der aber keinem realen Speicher zugewiesen wurde
Free = freier virtueller Speicher, der realem Speicher zugewiesen werden kann

Nur commited Memory kann wirklich ausgelesen werden, da in allenanderen Fällen gar kein Speicher da ist, den man wirklich auslesen kann. Versucht man auf Speicher zuzugreifen, der nicht commited ist, gibt es die bekannte Zugriffsverletzung (Messagebox und das Proggi wird vom OS gekillt).

Die API GlobalMemoryStatus liefert, wenn es um den virtuellen Speicher geht, keine wirklich brauchbaren Werte. Will man Werte über den virtuellen Speicher anderer Prozesse erfahren, sollte man auf die Native API ausweichen.

Gruß

Andreas
 
15.12.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.785 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie