我做到以下几点:如何在移动指针后释放一些字节?
void * myFunction(void) {
void *someBytes = malloc(1000);
// fill someBytes
//check the first three bytes (header)
if(memcmp(someBytes, "OK+", 3) == 0) {
// move the pointer (jump over the first three bytes)
someBytes+=3
}
return someBytes;
}
接收器如何能够释放malloced指针? 当然我可以在指针上做-3。
但是这种情况下是否有最佳做法? 是否有在接收器功能仍然允许调用free(someBytes);
因为someBytes
还可以举办多种兆我想避免的memcpy一个简单的解决方案(malloc(1000)
是唯一的例子)。
我相信你要找的是什么'realloc' - 这样一来,当你通过与数据你刚才读,您可以不断调整分配的字节大小。虽然,您已经通过立即分配1000个字节来让我们全部失败。从它的声音中,您实际上想要创建一个面向事件的流式阅读器,由几个情况组成。简单地说:'tmp = read(3); if(memcmp(tmp,“OK +”,3)== 0){free(tmp); tmp = read(997);/*此处更多的条件测试* /} else {free(tmp); } - 只读你所要的。 (除了嵌套if之外,它将是oop。) – 2012-07-21 14:45:08