在我的程序中,我有一个全局缓冲区字符串,比如说
char buffer[110];
它从适配器读取并存储尚未进行的字符串。我有这样的事情:
while(...){
readfromAdapter();
copytoBuffer();
processAndRemoveSomeCharsFromBuffer();
}
每次进行字符串的一部分时,我都希望将其从缓冲区中删除。我搜索了如何从C中的字符串中删除前几个字符,在大多数答案中我增加了指针,在本例中为buffer
。但是,在这种情况下,这应该导致溢出。
我有两种方法。
一个是每次我用完缓冲区中的空间时,我释放旧空间并为其分配一些新空间。在这种情况下,我将缓冲区从char数组更改为全局字符指针。
另一个是每次进行一些字符处理时,我将旧的buffer+len
复制到buffer
。
我该怎么做?
答案 0 :(得分:2)
似乎ring buffer可以帮到你。
答案 1 :(得分:1)
动态分配和释放内存非常昂贵。如果分配的空间足够大以调用SYSCALL,那么它将花费您额外的时间。你应该使用你所拥有的空间,如果它对你的程序来说是实用的,那么从一个字符串到另一个字符串的复制会更好。