我有这个结构:
struct KVP {
uint32_t KeyLenB;
uint32_t ValLenB;
void Set (char* pKey, uint32_t KeyLenB, char* pVal, uint32_t ValLenB) {
this->KeyLenB = KeyLenB;
this->ValLenB = ValLenB;
memcpy(this + sizeof(KVP), pKey, KeyLenB);
memcpy(this + sizeof(KVP) + KeyLenB, pVal, ValLenB);
}
snip
};
Run Code Online (Sandbox Code Playgroud)
那些进入预先分配的记忆块.另一种方法是在长度字段之后添加另一个成员并仅引用它,但sizeof(KVP)只返回长度字段的大小,在其余代码中更合适.
所以无论如何,因为这个函数将被调用很多,我想知道"this + sizeof(this)"是否会比指向潜在的第3个成员更慢?
是的,我知道这个不必要的优化和yadayada的流程,但这是我第三次重建这个软件,它是我的宝贝,我不在乎它是否永远不会看到光明的一天只要它完善.
App*_*ish 11
sizeof它不是一个函数,它是一个运算符,它在任何代码运行之前在编译时进行求值.因此,使用sizeof在运行时产生零成本.