Article View: de.comp.lang.c++
Article #146Re: Borland C++ 3.1, Fehler in Speicherverwaltung?
From: Jens Ehlers
Date: Thu, 21 Sep 1995 07:04
Date: Thu, 21 Sep 1995 07:04
55 lines
2640 bytes
2640 bytes
duening@ibr.cs.tu-bs.de (Lars Duening) wrote:
>Nebenbemerkung: in Programmierkursen gaebs fuer solche Programme
>Punktabzug wegen Unuebersichtlichkeit.
Die Quelle ist nur ein kleiner Rest eines urspruenglich laengeren Programms.
Das Programm ist noch viel viel unuebersichtlicher.
>
>> [...]
>> short *werte_b=NULL; /* Basis des Speicherbereichs */
>> [...]
>>for (n_zeiten=100;n_zeiten<=40000;n_zeiten+=100){
>>werte_n = (n_zeiten*n_kanaele )*sizeof(short);
>> werte_b = (short *) malloc(werte_n);
>
>Du forderst hier Felder von mehr als 64 KByte an, womit du gute
>Chancen hast, das malloc() zu ueberfordern (es gibt dir dann einfach
>werte_n % 65536 Bytes).
Normalerweise muss malloc() NULL zurueckgeben wenn es ueberfordert ist.
Wenn durch die Konversion in den size_t der Zahlenwert geaendert wird bekomme ich
eben weniger Speicher (s. o.).
>Selbst wenn das malloc() mitmacht, ist im Large-Speichermodell meiner
>Erfahrung nach der Feldindexbereich auf 64 KByte begrenzt.
>
>So oder so schreibst du ausserhalb der allokierten Speicherbereiche
>und zerstoerst so die Speicherverwaltung des DOS.
Ich schreibe nicht in und ich lese nicht aus dem Bereich!
Ich allokiere und gebe danach frei.
Das sollte in jedem Fall (auch mit DOS auf PC) funktionieren.
Oder nicht?
>
>Speichermodell Huge (oder explizites Arbeiten mit far und huge
>Pointern) sollte abhelfen.
In dem urspruenglichen Programm habe ich huge Pointer, faralloc() und farfree()
benutzt. Das Problem ist das gleiche. Ich hatte alle PC/Borland C++ spezifischen
Elemente entfernt um auch auf anderen Maschinen (HP 7xx, Apollo, IBM/AIX)
nach dem Fehler zu suchen. Das Problem tritt nur mit
Borland C++ auf.
Die Frage bleibt: Was ist falsch? Das Programm? Der Compiler? Der PC?
Jens
--
Jens Ehlers Hamburg, Germany
Tel. : +49 (0) 40 / 77 18 - 23 57
Fax. : +49 (0) 40 / 77 18 - 20 28
E-Mail: Ehlers@tu-harburg.d400.de
Technical Details
Message-ID:
<43r2q6$850@rztsun.tu-harburg.de>Path:
arc1-ca.pugleaf.net!news.tu-harburg.de!usenetReferences:
<43otte$ndb@rztsun.tu-harburg.de> <43pofg$jns@ra.ibr.cs.tu-bs.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.tu-harburg.de!usenet From: Jens Ehlers <Ehlers@tu-harburg.d400.de> Newsgroups: de.comp.lang.c++,;,de.comp.lang.c Subject: Re: Borland C++ 3.1, Fehler in Speicherverwaltung? Date: 21 Sep 1995 07:04:38 GMT Organization: Technische Universtaet Hamburg-Harburg Message-ID: <43r2q6$850@rztsun.tu-harburg.de> References: <43otte$ndb@rztsun.tu-harburg.de> <43pofg$jns@ra.ibr.cs.tu-bs.de> NNTP-Posting-Host: jupiter.mt2.tu-harburg.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 1.1N (X11; I; HP-UX A.09.03 9000/710) X-URL: news://news.tu-harburg.de/43pofg$jns@ra.ibr.cs.tu-bs.de