【发布时间】:2018-01-28 12:19:14
【问题描述】:
我想从 2 个指针中创建组合缓冲区而不进行任何复制。
示例:top 和 bottom 都是已分配的带有只读数据的缓冲区:
uchar top[10]; uchar bottom[10];
我需要这样的东西:
struct Buffer { uchar * top, * bottom; };
Buffer buffer; buffer.top = & top; buffer.bottom = & bottom;
然后使用缓冲区作为单个数组:
process( & buffer, size20 );
process 是某个库中的函数:
void process( uchar * buffer, int size );
在 c/c++ 中有一些方法可以做到吗?
【问题讨论】:
-
(什么是 C/C++?) 好吧,这不是按原样工作吗?您的函数
process可以同时访问buffer.top和buffer.bottom。 -
进程不是我的职责。它需要单个缓冲区。
-
流程的原型是什么? (参数的类型是什么?)我假设 uchar* 和 size_t 或 int。
-
如果这是 C++,并且
process是一个带有迭代器的模板,那么您可能已经编写了一些东西。如果它是一个 C 函数,那么您无能为力。无论哪种情况,您都应该问自己准备花多少工作来节省工作。有净赢吗? -
C 和 C++ 是不同的语言。如果您没有明确的跨语言问题,请不要同时使用这两个标签。