Coroutines mean that the thing that looks like a stack variable may not technically be one
Some time ago, I pointed out the
GetCurrentThreadStackLimits function which lets you determine whether a pointer points into the stack.
Note, however, that if the local variable is captured by a coroutine, The introduction of coroutines into the C++ language means that what looks like a local variable may end up being hoisted into a heap-allocated object representing the coroutine itself (like, say, a
Something to bear in mind if you’re going to be making decisions based on whether a variable is on the stack.