【发布时间】:2016-01-20 15:55:10
【问题描述】:
帮助我理解这一点。 这是上下文。
- 我正在用 C++ 编写程序。
- 我有 2 个缓冲区(双端队列)。我们称它们为 buffer1 和 buffer2;
- 我有 2 个线程:一个线程正在用随机值填充缓冲区 1。另一种是将最旧的buffer1值复制到buffer2;
- 我正在使用互斥锁。
我想将 buffer1 的第一个位置内的值复制到 buffer2 中,为了执行此操作,我编写了以下代码行:
线程 1
double a = 20.1;
buffer1.push_back(a);
线程 2
buffer2.push_back(buffer1.front());
我的问题是: 执行此操作,我是在复制值还是通过引用传递值? 我解释我的问题。我在运行程序时遇到随机内存问题。我想确定问题的根源是否在这里。
谢谢大家。
【问题讨论】:
-
你的容器里有什么?理想情况下,您应该提供minimal reproducible example。
-
@StoryTeller,你是对的。这是这里犯的错误,但不是在程序中。谢谢!我编辑了帖子。
-
@5gon12eder,容器有双打。
-
@NathanOliver,也许我在解释文档时遇到了问题(翻译问题):p 这对我来说不是很清楚。我不明白我是在复制(push_back)front() 给出的引用,还是复制front() 引用给出的值。
标签: c++ deque push-back double-free invalid-pointer