我执行以下操作:

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)仅用于示例)。

最佳答案

没有任何方法(除非你碰巧知道确切的偏移量)最佳实践是存储原始指针的副本,以便以后使用它释放内存。

void* myFunction(void) {
    void* someBytes = malloc(1000);
    void* pos = someBytes;
    // fill someBytes

    //check the first three bytes (header)
    if(memcmp(pos, "OK+", 3) == 0) {
        // move the pointer (jump over the first three bytes)
        pos+=3
    }

    return someBytes;
}

09-25 21:27