I would like to understand the difference between passing *&p and *p and when to use one over another.
Say, I have a init function like the following.
void init(lua_State *L) {
L = luaL_newstate(); //allocate new memory to L
}
And in main() if I try to access to L, it crashes.
lua_State *L;
init(L);
do_something(L);//crash
However, when I change the argument type to lua_State *&L, it no longer crashes.
Is it because allocating new memory changes value of pointer?
If so, isn't it better and safe to always pass with *& instead of *?
Is there any general rule about this?