🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #146

Re: Borland C++ 3.1, Fehler in Speicherverwaltung?

#146
From: Jens Ehlers
Date: Thu, 21 Sep 1995 07:04
55 lines
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!usenet
References: <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