相关疑难解决方法(0)

有一个很好的Valgrind替代Windows吗?

当我发现它仅适用于Linux时,我正在研究Valgrind以帮助改进我的C编码/调试 - 我没有其他需要或兴趣将我的操作系统转移到Linux所以我想知道是否有一个同样好的Windows程序.

c windows debugging valgrind memory-leaks

210
推荐指数
12
解决办法
30万
查看次数

内置类型有移动语义吗?

考虑以下代码:

#include <iostream>
using namespace std;

void Func(int&& i) {
    ++i;
}

int main() {
    int num = 1234;
    cout << "Before: " << num << endl;
    Func(std::move(num));
    cout << "After: " << num << endl;
}
Run Code Online (Sandbox Code Playgroud)

它的输出是:

Before: 1234
After: 1235
Run Code Online (Sandbox Code Playgroud)

显然,i正在内部进行修改Func,因为它i在被"转换"为r值引用之后被绑定到参数std::move.

好吧,我的观点:

移动对象意味着将资源的所有权从一个对象转移到另一个对象.但是,内置类型不包含资源,因为它们本身就是资源.转移他们持有的资源毫无意义.如示例所示,num修改了s值.它的资源,它的自我,是被修改的资源.

内置类型有移动语义吗?

另外,内置类型对象在移动后(如果是)是一个明确定义的行为吗?

c++ built-in-types move-semantics c++11

25
推荐指数
1
解决办法
5227
查看次数