我做到以下幾點:如何在移動指針後釋放一些字節?
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