sizeof()可能会被优化掉吗?

use*_*993 0 c++

我有这个结构:

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在运行时产生零成本.

  • 所以我们可以非常快地得到错误的结果? (5认同)