cost 110 ms
将右值传递给 std::move 并将右值引用绑定到它在 ASAN 中生成 stack-use-after-scope 错误 - pass rvalue to std::move and bind rvalue refence to it generate stack-use-after-scope error in ASAN

考虑这个代码片段 使用 ASAN g++ -fsanitize=address -fno-omit-frame-pointer -g -std=c++17 main.cpp -o main ,运行./main显示错误 但是如果我在 auto 之后删除引用,这段代码可以编译和运行而不会出现 ASAN ...

2022-09-27 16:08:01   3   47    c++ / stdmove  
移动语义和 std::move - Move semantics and std::move

我有一个关于移动语义的一般性问题。 昨天我只是为了更熟悉这个话题而玩耍。 在这里,我添加了复制和移动构造函数运算符,它们只需登录到控制台: 现在当我打电话 控制台注销: > 默认构造 > 你好这对我来说很清楚,因为我们只是将所有权转移到showMe 。 但是为什么不调用 Test 的 ...

将 object 添加到 std::map 不起作用,除非该类的 object 的“空”(无参数)构造函数存在 - Adding an object to std::map doesn't work unless an "empty" (no args) constructor for the class' object exists

我正在研究一个开源应用程序的代码。 我已经制作了这个代码的一个更简单的版本来隔离一些困扰我的东西(尽管我对这个代码有几个问题,我希望 C++ 大师能够帮助我,我将从主要的开始)。 主要问题:为什么分配给 std::map 的 object 的 class 需要一个“空”构造函数(无参数)? 主要思想 ...

C++ 移动语义字符串 - C++ move semantics string

我正在研究嵌入式系统,因此不可能抛出异常,仅提一下。 因此我的返回值将是一个结构。 我不确定是否必须在 std::string 上调用 std::move。 下面是一个非常简化的简化示例。 在主代码中 在这两种情况下都调用std::move是多余的吗? 还是我获得了一些性能优势? [编辑] 为了更 ...

初始化 unique_ptr 会导致“错误:使用已删除函数”,即使它是“std::move”ed - Initializing unique_ptr causes an "error: use of deleted function" even though it's "std::move"ed

我正在编写将std::unique_ptr传递给看起来很糟糕的几层的代码,但我别无选择,只能暂时传递它。 问题是当我尝试将std::unique_ptr传递给Provider类的构造函数时出现错误。 在调用Child::function1()时, Child已使用Impl&和std::un ...

为什么是static_cast<object&&> 这个function有必要吗?</object&&> - Why is static_cast<Object&&> necessary in this function?

试图理解std::move ,我找到了另一个问题的答案。 说我有这个 function 我认为我理解的是: arg是一个左值(值类别)。 arg是“对象的右值引用”类型。 static_cast转换类型。 arg和返回类型都是“对象的右值引用”类型, static_cast是不必要的。 但 ...

有人可以告诉我我是否正确使用了独特的指针 - Can someone please tell me if I'm using unique pointers correctly

我正在尝试更多地使用智能指针,但不确定我是否正确使用了它们。 我似乎需要到处使用 std::move 。 不太明白为什么,但它的工作原理。 我的示例代码所做的并不重要(什么都没发生:)),我更关心我如何使用这些指针的结构。 感谢您的任何建议。 ...

为什么 std::move() 中的 static_cast 会擦除参数的值? - Why does static_cast in the std::move() wipe value of argument?

我的问题包含两部分: 函数static_cast&lt;Т&gt;(arg)改变了arg的内部结构? 显然不是,根据这样的代码: 为什么这样的代码: 其中std::move()仅使用static_cast到 r 值: 使s1成为空字符串? 我猜,这是因为在s2 =之后使用了 strin ...

移动 Person 对象列表的构造函数 - Move constructor for a list of Person objects

我正在编写一个简单的代码,其中我有一个 class 人的对象列表。 人class 其中,移动构造函数是 我也有节点结构 其移动构造函数是 最后我有列表 class 其移动构造函数是 我的问题是:在移动构造函数中, std::move的使用是否正确? 特别是在list::insert的第一行代码中 ...

我可以在返回多个值时避免复制,同时保持我的返回类型吗? - Can I avoid copies when returning multiple values, while keeping my return type?

如果我们写如下 function: 然后NRVO应该启动,因此foo在返回时不会被复制。 现在假设我想返回两个不同的值: 这种幼稚的实现可能会触发每个Foo和Bar ( GodBolt ) 的两个副本的构造。 我应该如何最好地修改我的代码以避免这种复制,而不会弄乱我的返回类型? ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM