"Robert Haas" <robertmhaas@gmail.com> writes:
> Just out of curiosity, does C89, or whatever standard we follow, allow this?
>
> int
> somefunc(int x)
> {
> int foo[x];
> /* use foo[] for scratch space */
> }
It's not in C89 but look up "alloca".
We don't use it anywhere in postgres currently so it's kind of unlikely we
would start now.
I think C99 does allow what you typed, and I think gcc has an extension to
allow it too.
> Obviously this is a bad plan if x can be a big number because you
> might crash your stack, but suppose we know that's not an issue? It
> seems a shame to have to do palloc/pfree in a situation like this.
palloc really isn't that expensive, unless you're allocating tons of tiny
objects or you're in a tight loop it's not worth worrying about.
-- Gregory Stark EnterpriseDB http://www.enterprisedb.com Ask me about EnterpriseDB's Slony Replication
support!