如果 catch 块内发生异常会发生什么?
try {}
catch(...)
{
stream.close(); // IO exception here
}
Run Code Online (Sandbox Code Playgroud)
默认行为是什么?
我从线程 #1 接收对象 - 它是第 3 方库代码 - 我的回调调用了它。
对象具有固定长度的字符串字段:
typedef struct somestr_t {
char * Data;
int Len; } somestr_t;
Run Code Online (Sandbox Code Playgroud)
每次我都必须手动创建对象的副本,然后才能将其进一步传递给我的代码。因此,除其他外,我也使用这个助手复制这些字符串:
inline void CopyStr(somestr_t * dest, somestr_t * src)
{
if (src->Len == 0) {
dest->Len = 0;
return;
}
char* data = new char[src->Len];
memcpy(data, src->Data, src->Len);
dest->Data = data;
dest->Len = src->Len;
}
Run Code Online (Sandbox Code Playgroud)
然后我删除该对象及其字符串字段:
if (someobj != nullptr)
{
if (someobj ->somestr.Len != 0) delete someobj ->somestr.Data;
. . .
delete someobj ;
}
Run Code Online (Sandbox Code Playgroud)
当我运行时, …
我需要将 int 值 1,2,3 映射到字符 'C', 'M', 'A'
最快的方法是什么(这将被称为每秒 100 次 24/7)?
宏或内联函数和一堆 ?: 运算符或 ifs 或 switch?或者一个数组?