BC++ f. DOS: CALLOCs Coreflakes (Speicherreservierung)

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Antworten
ShadowFlame
Beiträge: 18
Registriert: Di Dez 24, 2002 10:57 pm

BC++ f. DOS: CALLOCs Coreflakes (Speicherreservierung)

Beitrag von ShadowFlame »

habe da ein kleines problem mit der speicherreservierung unter BC++ 3.1 für dos. mit malloc, calloc, farmalloc ode farcalloc kann man ja dynamischen speicher reservieren. leider funktioniert dass irgendwie nicht so, wie ich es mir vorstelle: mir stehen maximal nur 64K zur verfügung (meistens gerade mal 50K). was muss ich tun, um das gesamte RAM verwenden zu können (ich möchte eine 2MB große datei laden)?

mit den far und huge pointern und mit den diversen speichermodellen habe ich schon rumexperimentiert, aber ohne erfolg.
thx im vorraus
When the last hope disappears,
when smiles turn into tears...
and when darkness covers light,
the dark flame will shine red and bright...
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

Beitrag von XTale »

uhm... kein plan
aber warum benutzt jemand heute noch BC++ für dos?
Bild
ShadowFlame
Beiträge: 18
Registriert: Di Dez 24, 2002 10:57 pm

Beitrag von ShadowFlame »

aber warum benutzt jemand heute noch BC++ für dos?
1. die gute alte nostalgische oberfläche hat für mich charakter
2. will ich erstmal die grundlagen lernen
3. gehört das zu meiner grundausbildung
4. reicht eine dos-anwendung für das programm, das ich jetzt schreiben will
When the last hope disappears,
when smiles turn into tears...
and when darkness covers light,
the dark flame will shine red and bright...
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Beitrag von Katana »

Nur 'ne Idee, aber kann es sein, daß du mit BC++ 3.1 nur bis zu 64k (konventionellen DOS Speicher) kriegst und nur mit anderen (umständlichen) Methoden auf den RAM zugreifen kannst?

Gibt's evtl. neuere Versionen des Compilers/der IDE?

Tip: Versuch's mal in Newsgroups, evtl. kann dir da wer helfen ...

-> Ich hab' juste mal per Google in den Newsgroups geschaut, etvl. hilft das:
I use BC++ 3.1 with large model
and I just use malloc/farmalloc & free/farfree as required
with no special consideration. I have been told that
malloc just maps to farmalloc, so I always use farmalloc
since malloc only accepts 'unsigned int' block sizes (64k),
but farmalloc accepts 'unsigned long int'.
Link: http://groups.google.de/groups?q=BC%2B% ... .ca&rnum=1

Alle Suchergebnisse: http://groups.google.de/groups?q=BC%2B% ... TF-8&hl=de
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

Beitrag von XTale »

ShadowFlame hat geschrieben: 1. die gute alte nostalgische oberfläche hat für mich charakter
2. will ich erstmal die grundlagen lernen
3. gehört das zu meiner grundausbildung
4. reicht eine dos-anwendung für das programm, das ich jetzt schreiben will
1.) nunja - geschmackssache *g
2.) ob veraltete Grundladen viel bringen sei mal dahingestellt...
3.) ok - das zählt
4.) auch mit c++ kannste dosprogramme schreiben ;)
Bild
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Beitrag von Katana »

XTale hat geschrieben:4.) auch mit c++ kannste dosprogramme schreiben ;)
Aber, BC++ ist doch C++ ;)

Zu heutigen Zeiten würde wohl kaum noch einer mit ""C"
SyMbiOnT
Beiträge: 609
Registriert: Mi Mai 02, 2001 12:01 am

Beitrag von SyMbiOnT »

Bin auch der Meinung es an dem Compiler liegt dass du nicht mehr als 64KB reservieren kannst.
Der Anfänger freut sich, wenn nach dem Start des Programms Ziffern auf dem
Bildschirm erscheinen, der Eingeweihte prüft die Größenordnungen der ausgege-
benen Resultate, der Profi traut nicht einmal dem Vorzeichen.

http://www.bi.2fbi.de
ShadowFlame
Beiträge: 18
Registriert: Di Dez 24, 2002 10:57 pm

Beitrag von ShadowFlame »

@katana: danke für den link. da sind einige topics dabei, die nützlich sind.

@andere:
nun macht euch mal keine sorgen um meine derzeit noch mangelnden kenntnisse. ich weiß, dass man mit der 3. generation heute nicht mehr weit kommt, aber ich bin erst im zweiten jahrgang und nächstes jahr bis zur fünften machen wir dann nur mehr auf objektorientiert. also bevor ich meine zeit damit verbringe, vorrauszulernen, lerne ich lieber PHP4 und assembler, denn das machen wir nicht so genau, obwohl man das für das ein oder andere noch gebrauchen kann (vor allem php4).
4.) auch mit c++ kannste dosprogramme schreiben
aber mit c auch ^^
When the last hope disappears,
when smiles turn into tears...
and when darkness covers light,
the dark flame will shine red and bright...
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

Beitrag von XTale »

Katana hat geschrieben: Aber, BC++ ist doch C++ ;)
hups - peinlich, ich hät den ersten Post genauer lesen sollen *g
Zu heutigen Zeiten würde wohl kaum noch einer mit ""C"
Bild
Benutzeravatar
LostTemplar
Beiträge: 166
Registriert: Sa Aug 31, 2002 10:25 pm

Beitrag von LostTemplar »

XTale hat geschrieben:Aber was anderes: wofür bentuzt man unter c++ Malloc und co? C++ hat doch dynamisches Speichermanagement über new/delete. Ich glaub ein C++ Programmierer würde freiwillig niemals malloc/free und co benutzen ;)
Du kennst dich aus, ich habe calloc/malloc nie benutzt, benutze es nicht und werde es auch nie benutzen ^^. new/delete sieht einfach eleganter aus (und ist es eigentlich auch). Und ich würde, wenn es zur Verfügung steht, einfach mit VC++ eine Windows-Konsolenanwendung machen oder ansonsten nen freien C++ Compiler für Windows verwenden... da hat man das ganze DOS-Problem mit dem RAM nicht.
Proof of Concept [ROM Translations]
http://temp.newclear-webs.de/poc/index.php
ShadowFlame
Beiträge: 18
Registriert: Di Dez 24, 2002 10:57 pm

Beitrag von ShadowFlame »

kann man mit new und delete aber auch die 64K grenze durchbrechen?
diese beiträge von den newsgroups haben mir irgendwie alle nicht weitergeholfen. da steht, man sollte einfach huge statt far vor den zeigern stellen und ein paar andere kleinigkeiten, aber das ändert auch nichts.
ist hier niemand, der eine technik zur speicherausdehnung im dos bc++ schon mal erfolgreich angewendet hat?
When the last hope disappears,
when smiles turn into tears...
and when darkness covers light,
the dark flame will shine red and bright...
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

Beitrag von XTale »

new nimmt sich soviel wie es brauch um das element zu erstellen ;)

warum willste überhaupt 2mb speicher reservieren wenn du die datei einlesen willst? mir wird da nicht so wirklich ein sinnklar...
Bild
ShadowFlame
Beiträge: 18
Registriert: Di Dez 24, 2002 10:57 pm

Beitrag von ShadowFlame »

ich mach so eine art editor für ein ROM. und deshalb will ich den inhalt als byte-array abspeichern, ihn bearbeiten und zum schluss wieder abspeichern
(und auch ein backup anlegen).
die datei selber braucht ja auch den speicher, oder?
When the last hope disappears,
when smiles turn into tears...
and when darkness covers light,
the dark flame will shine red and bright...
Antworten