[MOAB-dev] variable-length arrays
Jason Kraftcheck
kraftche at cae.wisc.edu
Tue Nov 17 13:48:07 CST 2009
Beginning with the C99 standard, the C language has had support for
automatic-duration variable-length arrays. For example:
void foo( int n ) {
int array[n]; // 'n' is *not* a constant
...
}
No C++ standard incorporates this feature yet. However, given that a) it is
common for much code to be shared between C and C++ compilers from the same
vendor, b) this feature has been in the C standard for a decade, and c) this
feature will be included in the next C++ standard, it seems likely that many
C++ compilers support this feature now (e.g The Gnu compiler does.)
It is possible to get the same functionality in c++ using std::vector
(except for arrays of bool, and assuming the time to zero the memory isn't
significant). However, std::vector allocates storage on the heap while a
automatic array will (typically) be allocated on the stack. For a few cases
involving tight loops where the performance with heap allocation is
unacceptable, it would be nice to be able to use var-len auto arrays.
We have not this feature anywhere in MOAB or CGM so far because of possible
portability issues. Does anyone have any experience with using
variable-length automatic arrays in C++ code that is built on diverse systems?
- jason
More information about the moab-dev
mailing list