The problem with solution #1 is freeing orphaned pointer. It will work, but it's simple is not okay from object life time prospective.
?? I don't get your point at all Andy.Two allocations happens in a loop and if the second fails, you free the first and then jump to free everything allocated in the previous iterations. what am I missing?