我想从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 );
进程是一些lib的函数:
void process( uchar * buffer, int size );
c / c ++中是否有一些方法可以做到这一点?
答案 0 :(得分:0)
无法定义SELECT A.col1, B.col1, A.col2, B.col2 ... A.col5, B.col5
FROM (HARD BIG REQUEST) as A, (HARD BIG REQUEST) as B
WHERE A.col3 = B.col3 and A.col2!=B.col2 and A.col1 != B.col1
,以便分配两个不同数据字符串端到端。您必须将其定义为
Buffer
然后你必须用直接副本设置这些值。
答案 1 :(得分:0)
如果流程如下:
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);