RevData中如果放的是对象数据,不是char* int,可以用如下方式:
RevData *recvD =new RevData;
recvD.size = i;
strcpy(recvD.data, "hello");
queue1.push(recvD);// recvp);
如果是char*,就得用malloc:
struct RevData{
int size;
char data[1000];
} recv_data;
#include <iostream>
#include <queue>
#include<map>
#include <string>
#include <mutex>
//#include <Windows.h>
using namespace std;
queue<RevData*> queue1;
queue<RevData*>* queue2;
for (int i = 0; i < 10; i++) {
RevData recvD;
recvD.size = i;
strcpy(recvD.data, "hello");
RevData* recvp = (RevData*)malloc(sizeof(RevData));
memcpy(recvp, &recvD, sizeof(RevData));
queue1.push(recvp);
}
queue2 = &queue1;
for (int i = 0; i < 10; i++) {
RevData* recv = queue2->front();
cout << (*recv).data << endl;
int lenga = queue2->size();
queue2->pop();
int lenga2 = queue2->size();
cout << (*recv).size << endl;
}
结论,队列中使用结构体指针时,指针需要分配内存,否则队列里取出来的全是最后一个结构体。