Article View: pl.comp.lang.c
Article #812Re: Rezerwacja pamieci
From: Marek Kotowski
Date: Thu, 22 Jan 1998 16:23
Date: Thu, 22 Jan 1998 16:23
55 lines
3202 bytes
3202 bytes
Mirek Prywata wrote: > Co do huge, to zgodze sie w zupelnosci. Natomiast jezeli chodzi o > graniczenia typu 32767... [...] > Przy dzisiejszych wielkosciach RAMu, dbalosc o to, by pojedyncze bloki > byly mniejsze niz 32kB uwazam za pewna przesade. > Czy nie jest tez tak, ze zgodnie z ANSI ostatnio zmieniono 32kB na 64kB? > I czy w ANSI ogranczenie to dotyczy tylko tablic statycznych (caly moj > wywyod dotyczy tylko tablic dynamicznych)? 1. 32 K jest ograniczeniem nakladanym przez standard. Kompilator zgodny ze standardem nie ma obowiazku obslugiwac obiektow danych wiekszych niz 32 K, i to niezaleznie, czy znajduja sie one w pamieci dynamicznej czy statycznej. 2. Zwiekszenie limitu 32K do 64K proponuje sie w nowym standardzie ANSI (przynajmniej takie chodza sluchy). I pewnie autorzy standardu z tym sie zgodza. Tym bardziej, ze wiekszosc istniejacych kompilatorow akceptuje tablice o takim rozmiarze. Ale do oficjalnego zatwierdzenia zmiany limitu uplynie jeszcze troche czasu. 3. Pragne zwrocic uwage, ze w poscie wyjsciowym byl pomysl alokacji obszaru ok. 300K. To juz jest konstrukcja, z ktora - smiem twierdzic - duza czesc, jesli nie wiekszosc kompilatorow sobie nie poradzi. Co wiecej: sposob dzialania modeli huge jest rozny w rozych kompilatorach. Zatem stosujac taki model pamieci, ryzykuje sie, ze zmiana kompilatora na inny, takze obslugujacy model huge, moze wymagac zmian w programie. 4. Wbrew pozorom ograniczenie rozmiaru zmiennych do 32767 nie jest niezyciowe. Zdarzylo mi sie kilka razy miec tablice wskaznikow w modelu small (male dane). Tablice te nie przekraczaly owego limitu 32K. Otoz zmiana modelu na large (duze dane) spowodowala, ze rozmiar wskaznikow podwoil sie i tym samym podwoila sie tablica. Wprawdzie przekroczyla limit 32K, ale zmiescila sie w limicie 64K, i w programie nie trzeba bylo nic zmieniac (chociaz stal sie on formalnie nieprzenosny). Gdybym w modelu small zwiekszyl tablice do rozmiaru 40K, mialbym juz klopoty z przeniesieniem jej do modelu large (linker nie przyjmowal obiektow wiekszych niz 64K). I prawde rzeklszy, czyz male nie jest piekne? :-) 5. Oczywiscie sa aplikacje szczegolne, gdzie alokowanie duzych obszarow pamieci jest konieczne. To inna sprawa. Akurat w poscie wyjsciowym w tym watku takiej sytuacji prawdopodobnie nie bylo. A zasady dobrego stylu nakazuja - poprawie sie: zalecaja :-) - by w miare mozliwosci unikac stosowania konstrukcji nieprzenosnych. Pozdrawiam Marek Kotowski
Technical Details
Message-ID:
<34C77265.11BB@imm.org.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!not-for-mailReferences:
<34C4F3AB.C34902CC@willow.iie.pz.zgora.pl> <34C5BEC9.2018@imm.org.pl> <34c73f51.1429095@news.icm.edu.pl> <34C70746.46AB@imm.org.pl> <34C7636B.33829801@fuw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!not-for-mail From: Marek Kotowski <mkot@imm.org.pl> Newsgroups: pl.comp.lang.c Subject: Re: Rezerwacja pamieci Date: Thu, 22 Jan 1998 17:23:01 +0100 Organization: Instytut Maszyn Matematycznych Lines: 55 Message-ID: <34C77265.11BB@imm.org.pl> References: <34C4F3AB.C34902CC@willow.iie.pz.zgora.pl> <34C5BEC9.2018@imm.org.pl> <34c73f51.1429095@news.icm.edu.pl> <34C70746.46AB@imm.org.pl> <34C7636B.33829801@fuw.edu.pl> NNTP-Posting-Host: 148.81.238.53 Mime-Version: 1.0 X-Mailer: Mozilla 3.01Gold (Win95; I) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit