You assigned address of the pointer variable, not the pointer itself. The reason you got SIGSEGV not immediately but only after some loops is that AudioBuffer16_ variables pointed to some place on the stack and it kept working until it reached end of the allocated stack space.