来自 2 个指针的组合缓冲区,无需复制
Combined buffer from 2 pointers without copy
我想从 2 个指针制作组合缓冲区而无需任何复制。
示例:顶部和底部是所有准备好分配的缓冲区,其中包含只读数据:
uchar top[10]; uchar bottom[10];
我需要这样的东西:
struct Buffer { uchar * top, * bottom; };
Buffer buffer; buffer.top = & top; buffer.bottom = & bottom;
然后使用缓冲区作为单个数组:
process( & buffer, size20 );
进程是来自某些库的函数:
void process( uchar * buffer, int size );
c/c++ 中是否有一些方法可以做到这一点?
无法定义Buffer
,以便分配两个不同的数据字符串以端到端结束。您必须将其定义为
struct Buffer { uchar top[10], bottom[10]; };
然后,您必须使用直接副本设置这些值。
如果进程如下所示:
process(uchar* buf, size_t n);
您可以创建一个任意长的缓冲区 (20?),如下所示:
uchar buffer[20];
然后创建顶部和底部作为指针,指向"缓冲区"的上半部分和下半部分,例如:
uchar* top = buffer;
uchar* bot = buffer + 10;
或:
uchar* top = &buffer[0];
uchar* bot = &buffer[10];
现在可以调用进程:
process(buffer, 20);
您还可以执行以下操作:
struct buffer{
uchar top[10];
uchar bot[10];
};
buffer buf;
buf.top = ....
buf.bot = ....
process((uchar*)&buf, 20);
相关文章:
- 将缓冲区复制到剪贴板 [换行错误]
- 如何避免将数据缓冲区的额外副本复制到字符串?
- 适用于大型数组的无复制线程安全环形缓冲区
- Vulkan:设备在缓冲区复制过程中丢失
- 如何正确复制内存缓冲区?
- 如何将 QString 复制到缓冲区wchar_t
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- strcpy_s将超过字符串长度的字符串复制到目标缓冲区(用 0xFE 填充)
- 返回指向矢量数据的指针,而不复制缓冲区和内存泄漏
- 来自 2 个指针的组合缓冲区,无需复制
- 无需额外复制即可存储和访问 deque<vectors> 缓冲区 (c++)?
- 包装二进制缓冲区 - 可能没有多余的移动/复制?
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 如果strncpy将随机数据复制到缓冲区中会发生什么
- 从缓冲区创建Qimage,没有深层复制
- 复制颜色和depthstencil缓冲区以备日后使用
- 如何在 Poco C++ 中复制缓冲区字节块
- DX11 OpenGL 互操作:无法复制缓冲区
- 构造不复制缓冲区的流
- 使用std::copy复制缓冲区