这两个宏使用alloca在栈上分配内存,退出生命周期后才会释放所占用的内存.
所以在一个函数的循环体中使用A2W等字符转换宏可能引起栈溢出。
真想在循环中使用的话,这个宏用单独的大括号包含起来,类似这样
void fn()
{
while(true)
{
{DoSomething(A2W("SomeString"));} // 这个大括号的作用就是当宏退出作用域时,自动释放内存
}
}
这两个宏使用alloca在栈上分配内存,退出生命周期后才会释放所占用的内存.
所以在一个函数的循环体中使用A2W等字符转换宏可能引起栈溢出。
真想在循环中使用的话,这个宏用单独的大括号包含起来,类似这样
void fn()
{
while(true)
{
{DoSomething(A2W("SomeString"));} // 这个大括号的作用就是当宏退出作用域时,自动释放内存
}
}