来自2个指针的组合缓冲区没有副本

时间:2018-01-28 12:19:14

标签: c++ c linux pointers

我想从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 ++中是否有一些方法可以做到这一点?

2 个答案:

答案 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);