<分区>
我有一个 lambda,它使用在函数范围内定义的 const char *。 lambda 在函数返回后执行。
void function() {
const char * UNLOCK_RESULT = "unlockResult";
..
..
TestStep::verifyDictionary(test, [UNLOCK_RESULT](TestStep::Dictionary& dict){
return 1 == dict[UNLOCK_RESULT].toInt();
});
...
}
如果我查看 GCC 生成的程序集,会发现保存“unlockResult”的实际字符数组是静态分配的。但我想知道这是否由标准保证,因为理论上 const char * 是函数范围的。是对 const char * 未定义行为的捕获,还是由于围绕 C++ 处理 const char * 字符串的一些异常而被标准允许。
我知道我可以改变:
const char * UNLOCK_RESULT=""
to
constexpr const char * UNLOCK_RESULT=""
然后讨论就结束了,因为我什至不需要捕获它,但我对 const char * 的情况很好奇。