holdarea is a local variable in function parse_words().
When the function ends, the local variables fall out of scope and no longer exist - that means the memory where they were stored may be reused for some other purpose. Returning a pointer to a local variable like this is not valid.