多年后我回到C ++(之前从未如此深入过),所以请为我的小说沉迷于我:)
作为结构的字段,我有一个指向某些数据的* void。结构指向的内存在每次调用给定函数后都会填充不同的数据,所以我想在向量中的每个函数调用之后“缓存”结果,以便最终获得所有数据。我怎样才能实现这个目标?
我宣布了static vector<unsigned char> vectorBuffer;
并尝试了vectorBuffer.insert(vectorBuffer.end(), (unsigned char*)myStruct->thePointer)
和vectorBuffer.push_back((unsigned char*)myStruct->thePointer)
,但显然我遇到了错误。获得这样结果的正确方法是什么?
由于
编辑:我也知道void *的大小,因为我的struct中有另一个字段会像数据一样刷新。
答案 0 :(得分:3)
你想要做的就是缓冲多个回调分段的数据:
#include <vector>
std::vector<char> buffer;
buffer.insert(buffer.end(), data, data+length);
假设data
是您的回调数据,长度也可用。
答案 1 :(得分:0)
您应该使用
声明矢量static vector<unsigned char *> vectorBuffer;
(它是一个无符号字符指针数组,而不是无符号字符)。
要保存数据(假设您知道尺寸),
unsigned char *p = new unsigned char[myStruct->bufferLength];
memcpy((void *) p, myStruct->thePointer, myStruct->bufferLength);
vectorBuffer.push_back(p);
然后您可以使用
跟踪长度static vector<unsigned char *> bufferLength;
bufferLength.push_back(myStruct->bufferLength);
请注意,之后你需要释放内存。