Я пишу на C ++ и использую библиотеку.Мой код выглядит примерно так:
struct request {
int order;
float size;
};
typedef struct request req;
.. ...
std::queue <req> wait_queue;
// ...
for (int i = 0; i < 5; i++) {
req r;
r.order = i + 1;
r.size = 100;
wait_queue.push(r);
}
// ...
if (!wait_queue.empty()) {
req r = wait_queue.front();
// do something...
}
Где req r
не конфликтуют, потому что они определены в различных функциях в действительности.Теперь я знаю, что переменные сохранены правильно, потому что когда я запускаю gdb
и набираю p wait_queue
, он показывает:
(gdb) $1 = std::queue wrapping: std::deque with 5 elements = {{order = 1, size = 100}, {order = 2, size = 100}, {order = 3,
size = 100}, {order = 4, size = 100}, {order = 5, size = 100}}
Но после r = wait_queue.front()
, p r
показывает:
(gdb) $2 = {order = 6417952, size = 0}
Итак, я хочу знать, как это может произойти, и что я могу сделать, чтобы r
удерживал {order = 1, size = 100}
.
Заранее спасибо!