Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Weinze

Frischling

  • »Weinze« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Klagendorf am Wörtherteich

Beruf: Schüler

  • Private Nachricht senden

1

30.07.2010, 00:19

Frage zu: "Virtuelle Datei aus einem Speicherbereich erstellen"

Beim Kapitel über Virtuelle Dateien gibt es ja die Möglichkeit Virtuelle Dateien aus einem Speicherbereich zu erstellen.

Meine Frage lautet: Ich kann da jetzt ja nicht einfach irgendeinen Wert für den Beginn des Bereiches eintragen oder? :huh:

Ich zumindest krieg dabei immer ein böse Fehlermeldung:
Unhandled exception at 0x10130583 in TestProjekt.exe: 0xC0000005: Access violation reading location 0x78bfa204.

Was meint ihr dazu?

Lg
Außen Toppits, innen Geschmack!

Weinze

Frischling

  • »Weinze« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Klagendorf am Wörtherteich

Beruf: Schüler

  • Private Nachricht senden

2

30.07.2010, 00:22

Achja! Der Code wird euch wahrscheinlich auch interessieren:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
tbVFile* pFile2 = new tbVFile;
    if(pFile2->Init((void*)(0x78BFA204), 1024))
    {
        tbWriteToLog("Du hast gefailt beim erstellen einer virtuellen Datei! YAY -.-");
    }
    else
        tbWriteToLog("Hat wieder mal alles gepasst... sauber!");
        
    TB_SAFE_DELETE(pFile1);
    TB_SAFE_DELETE(pFile2);
Außen Toppits, innen Geschmack!

idontknow

unregistriert

3

30.07.2010, 00:48

Öhh. Warum willst du irgendeinen Speicherbereich als Datei interpretieren? SOllte auch nicht mit allem funzen, denke aber ein Char Array, kannst du als Datei interpretieren!

ALso sowas (freehand!)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
tbVFile* pFile2 = new tbVFile;
std::string rawfile = "das ist die rohe datei :D";
    if(pFile2->Init((void*)(rawfile.c_str()), rawfile.size()))
    {
        tbWriteToLog("Du hast gefailt beim erstellen einer virtuellen Datei! YAY -.-");
    }
    else
        tbWriteToLog("Hat wieder mal alles gepasst... sauber!");
        
    TB_SAFE_DELETE(pFile1);
    TB_SAFE_DELETE(pFile2);

Weinze

Frischling

  • »Weinze« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Klagendorf am Wörtherteich

Beruf: Schüler

  • Private Nachricht senden

4

30.07.2010, 01:13

Danke für die Antwort aber im Buch ist genau das beschrieben was ich tu, allerdings funktioniert es nicht =/
Außen Toppits, innen Geschmack!

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

5

30.07.2010, 02:05

Es funktioniert nicht, weil du auf irgend einen Bereich im Speicher zugreifst, der geschützt ist, weil er evtl. von einem anderen Programm verwendet wird oder so. Es kann ja nicht sein, dass ein Programm auf den kompletten Speicher zugreifen kann, auch wenn es ihn nicht reserviert hat. Du musst also den Sepicher schon reserviert haben.

6

30.07.2010, 08:53

Man wird NIEMALS einen Zeiger direkt mit irgendeinen Wert initialisieren. Das man auf einen anderen Zeiger mal was addiert oder subtrahiert kommt vor, aber direkt einen Speicherbereich anzugeben, macht man einfach nicht, weil man nie wissen kann, ob es abstürzt oder nicht.
Lieber dumm fragen, als dumm bleiben!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

30.07.2010, 09:08

Man wird NIEMALS einen Zeiger direkt mit irgendeinen Wert initialisieren. Das man auf einen anderen Zeiger mal was addiert oder subtrahiert kommt vor, aber direkt einen Speicherbereich anzugeben, macht man einfach nicht, weil man nie wissen kann, ob es abstürzt oder nicht.
Die Wahrscheinlich, dass nichts schlimmes passiert, ist doch aber marginal ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

8

30.07.2010, 11:00

Kommt drauf an, ob man eine Access Violation als etwas Schlimmes betrachtet ;-)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

30.07.2010, 11:45

Hehe.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Weinze

Frischling

  • »Weinze« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Klagendorf am Wörtherteich

Beruf: Schüler

  • Private Nachricht senden

10

30.07.2010, 14:14

Ok ich weiß was ihr mir sagen wollt und ich stimm euch zu. Mir kam das von Anfang an seltsam vor einen Pointer auf direktem Weg mit einem Speicherbereich zu füttern. Im Prinzip bedeutet das für mich aber nur, dass es böse ist, die Beispiele aus dem Buch bis ins letzte Detail so zu schreiben wie sie angegeben sind. :)

Danke für die vielen Antworten.
Außen Toppits, innen Geschmack!

Werbeanzeige