Ich versuche, ein Programm zu debuggen, das ich geschrieben habe. Entsprechend dem Debugger hält ein bestimmter void *
den Wert 0x804b008. Ich möchte in der Lage sein, diesen Wert zu dereferenzieren (umwandeln Sie ihn in einen int *
und erhalten Sie seinen Wert).Dereferenzierung beliebiger Speicherplatz in C
Ich bekomme einen Segmentierungsfehler mit diesem Code. (Das Programm mit den void *
läuft noch im Hintergrund btw - es ist ‚pausiert‘)
#include <stdio.h>
int main() {
int* pVal = (int *)0x804b008;
printf("%d", *pVal);
}
Ich kann sehen, warum jeden Punkt im Speicher zu Ehrerbietung in der Lage, gefährlich werden könnte, so vielleicht ist das, warum dies nicht funktioniert .
Vielen Dank!
Ich habe ein bisschen über OS-Entwicklung gelesen, also glaube ich, dass ich irgendwie verstehe, worüber Sie sprechen. Ist dieser virtuelle Speicher im RAM - nur auf ein anderes Adressierungsschema oder etwas anderes zugeordnet? Danke nochmal. EDIT: beantwortete meine Frage, bevor ich es sogar fragte! – Tyler
Virtueller Speicher bedeutet nur, dass Sie, wenn Sie ein Programm schreiben, einen schönen zusammenhängenden Speicherplatz haben. Das Betriebssystem übernimmt die gesamte potenzielle Speicherfragmentierung für Sie. –
Danke. Ich habe so viel gesammelt. Ich war mehr daran interessiert, wie * es * auf Betriebssystemebene implementiert wird. http://en.wikipedia.org/wiki/Virtual_memory#Page_tables scheint zu sein, wie es gemacht wird. Danke – Tyler