kearns@cs.columbia.edu (Steve Kearns) (07/25/90)
Turbo C++ is very solid, fast enough, and has lots of whiz bang features... but I discovered a serious problem recently. I have a number of C++ files which will not compile because of insufficient space. Even though I have 640K + 4 Meg of extended memory. Turbo swaps out its CODE to extended memory or disk, but none of its data. Coupled to the fact that Turbo insists on in-memory compilation for speed, the result is a limitation on the size of files that can be compiled. I find this rather inexcusable for a robust programming tool. How hard can it be to for them to recompile their program using Rational Dos Extender, or write out part of the compilation to disk when neccessary? Zortech C++ makes full use of extended memory, as does Glockenspiel C++. But turbo has the best environment, debugger, and most robust implementation of the three. Life can be hard.... -steve
sidney@saturn.ucsc.edu (Sidney Markowitz ) (07/26/90)
In article <1990Jul24.212832.23427@cs.columbia.edu> kearns@cs.columbia.edu (Steve Kearns) writes: >I have a number of C++ files which will not compile because of >insufficient space. Even though I have 640K + 4 Meg of extended >memory. > >Turbo swaps out its CODE to extended memory or disk, but none of its >data. It's possible you have files which exceed the capacity of TC++, but it is more likely you have run into a glitch in the compiler. A large number of destructors for local variables and temporaries in a single block scope will cause the compiler to generate an out of memory error earlier than it should. You can tell if this is what you are running into, because compiling the file will still give you an out of memory error even if you comment out every function but one that contains the problem code. The workaround (until a fixed comes out) is to declare local variables that have destructors within a local {block} where they are used, and to surround expressions that generate temporary class instances (e.g., "foo" + "bar" where you have a string class that overloads + and has a conversion operator for const char *) with {}. The idea is to reduce the number of destructor calls within a single declaration scope. Of course you only have to do this in functions that have this problem. --sidney markowitz <sidney@saturn.ucsc.edu> Disclaimer: I work for Borland (R&D), but I'm not speaking for Borland