小编Dar*_*ell的帖子

Clang在编译时不为非constexpr变量求值constexpr函数的值

一些代码:

constexpr int sum(int a, int b) {
    return a + b;
}

int main() {
    int a = sum(4, 5);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用编译此代码,clang-9int a在编译时不评估main函数的值。如果我使用constexpr int aclang在编译时对其进行评估,但我无法在运行时更改此变量。

但是在编译时gcc-7.1评估的值int a

为什么会这样呢?如何解决?

c++ clang constexpr

5
推荐指数
2
解决办法
165
查看次数

为什么Rust重复使用具有相同值的内存

示例代码:

fn main() {
    let mut y = &5; // 1

    println!("{:p}", y);

    {
        let x = &2; // 2
        println!("{:p}", x);
        y = x;
    }

    y = &3; // 3
    println!("{:p}", y);
}
Run Code Online (Sandbox Code Playgroud)

如果第三次分配包含&3代码输出:

0x558e7da926a0
0x558e7da926a4
0x558e7da926a8
Run Code Online (Sandbox Code Playgroud)

如果第三个分配包含&2(与第二个分配相同的值),则代码输出:

0x558e7da926a0
0x558e7da926a4
0x558e7da926a4
Run Code Online (Sandbox Code Playgroud)

如果第三个分配包含&5(与第一个分配相同的值),则代码输出:

0x558e7da926a0
0x558e7da926a4
0x558e7da926a0
Run Code Online (Sandbox Code Playgroud)

如果赋值相同,为什么生锈不释放内存而是重新使用它,否则分配新的内存块?

memory rust borrow

4
推荐指数
1
解决办法
148
查看次数

标签 统计

borrow ×1

c++ ×1

clang ×1

constexpr ×1

memory ×1

rust ×1