December 11th, 2017

Coroutines mean that the thing that looks like a stack variable may not technically be one

Some time ago, I pointed out the Get­Current­Thread­Stack­Limits 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 std::future).

Something to bear in mind if you’re going to be making decisions based on whether a variable is on the stack.

Topics
Code

Author

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

0 comments

Discussion are closed.