<p>If we implement a stack using arrays in C++, what is the best way to reduce the chance of an overflow condition?  Also while keeping in mind the time-space trade off?</p>

Just resize your array when you get close to the "overflow condition", i.e. when the next element wouldn't fit any longer. Or use a
```
std::vector
```
, which you can resize easily.
Not sure, but you are aware of the
```
std::stack
```
class, which implements a stack which resizes automatically in C++?
[EDIT] If you don't want to resize, but fail properly, throwing an exception is the best thing you can do. For example, you could define a
```
StackOverflowException
```
and throw it if there is no space left, so clients can react.