They do, but, unless I'm mistaken on this point I think there is a difference. In the first case, the buffer is duplicated if I call the function twice; in the second case the buffer is overwritten in place because the pointer is discarded immediately after it's used and before using it once more.