| www.delorie.com/archives/browse.cgi | search |
| From: | "Deepblade" <deepblade AT geocities DOT com> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | Re: 3k lines = 4 MEG!! EXE ?? Help |
| Date: | Sat, 24 Jan 1998 13:46:47 +0200 |
| Organization: | GEM Internet Company (Pty) Ltd |
| Lines: | 43 |
| Message-ID: | <885719592.215815@diamond.gem.co.za> |
| References: | <34C4B1C1 DOT 51D2 AT netunlimited DOT net> <34C5716C DOT 541A AT cs DOT com> |
| NNTP-Posting-Host: | onyx.gem.co.za |
| Cache-Post-Path: | diamond.gem.co.za!unknown AT cpt5 DOT gem DOT co DOT za |
| Cache-Post-Path: | news.gem.co.za!unknown AT diamond DOT gem DOT co DOT za |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
>If you are using C++, then the answer is simple: gcc builds static
>arrays into the executable when compiling a C++ program. If you declare
>something like:
>
>static int global_array[1000][1000];
>
>All 4 megabytes of the array will be included in the executable file.
>See chapter 8.14 of the DJGPP FAQ for precise details and instructions
>on how to keep this from happening.
As I see it, prefixing a global array declaration with the word 'static'
stops gcc from building huge files.
take for example these files:
// nostatic.cc
char buf[1024][1024];
int main() { }
and
// static.cc
static char buf[1024][1024];
int main() { }
when compiled using:
gcc -s nostatic.cc -o static
gcc -s static.cc -o nostatic
gives me:
nostatic.exe at 1051kb
static.exe at 27kb
I've been using this for ages, and it has always worked for me.
Is it a bad idea?
I know I should probably use dynamic allocation, but I'm lazy ;-)
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |