line 30: the header provides typeid demangle, however for compilers using <tt>cxxabi</tt> (eg.: GCC), it calls <tt>abi::__cxa_demangle</tt> with a buffer allocated on the stack.

<verbatim>
    char buf[1024]; <-- error is this
    size_t size=sizeof(buf);
    int status;
    char* res = abi::__cxa_demangle (name, buf, &size, &status);
</verbatim>

Relevant quotes from the cxxabi documentation:

<blockquote>output_buffer
    A region of memory, allocated with malloc, of *length bytes, into which the demangled name is stored.
</blockquote>

<blockquote>    The caller is responsible for deallocating this memory using free.
</blockquote>

Sourced by [1] referencing [2].

  *  [1]
  *  [2]