【发布时间】:2014-06-02 23:09:04
【问题描述】:
我有一个 std::vector ,它将填充一些专有硬件的指令。我有代码来构造这个缓冲区并很好地操作它。
问题是我需要使用另一个库(基于 C)来构建类似的专有硬件指令,但是库希望我们提供原始内存并返回一个指向它的指针,然后库使用它来编写它的命令。
我想完成类似以下的事情[伪代码,不像真正的代码]:
void* theLibraryCallback (void* clientData, unsigned int theLibrarySize)
{
std::vector<unsigned int> cmd = reinterpret_cast<std::vector<unsigned int>>(clientData);
std::vector<unsigned int>::size_type cmdSize = cmd->size();
for (int loop=0;loop<theLibrarySize; loop++)
cmd->push_back(0xdeadbeef);
return cmd->GET_RAW_POINTER_AT(sizeof(unsigned int)*cmdSize); ///<< How can I do this?
}
概念是我向向量添加值以腾出空间,但其他库直接修改它们。
如果我不能这样做,我必须考虑分配临时原始内存,用库填充它,然后将其复制到我的向量中,但如果可能的话,我想避免这种情况。
我想做的事有可能吗?
【问题讨论】: