Seite 1 von 1

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

Verfasst: Di Feb 04, 2003 8:53 pm
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

Verfasst: Di Feb 04, 2003 9:03 pm
von XTale
uhm... kein plan
aber warum benutzt jemand heute noch BC++ für dos?

Verfasst: Di Feb 04, 2003 9:49 pm
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

Verfasst: Mi Feb 05, 2003 1:37 am
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

Verfasst: Mi Feb 05, 2003 6:51 pm
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 ;)

Verfasst: Mi Feb 05, 2003 6:59 pm
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"

Verfasst: Mi Feb 05, 2003 7:06 pm
von SyMbiOnT
Bin auch der Meinung es an dem Compiler liegt dass du nicht mehr als 64KB reservieren kannst.

Verfasst: Mi Feb 05, 2003 8:19 pm
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 ^^

Verfasst: Mi Feb 05, 2003 10:13 pm
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"

Verfasst: Mi Feb 05, 2003 11:02 pm
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.

Verfasst: Do Feb 06, 2003 8:37 pm
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?

Verfasst: Do Feb 06, 2003 9:10 pm
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...

Verfasst: Do Feb 06, 2003 9:37 pm
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?