免费提供动态分配的内存

DEV*_*DEV 0 c malloc free pointers

我有这个C代码:

int main()
{
    int *p=(int *)malloc(100);   //100 bytes

    for(int i=0;i<10;i++)
    {
        p++;
    }

    free(p);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是释放(p)释放所有100个字节或仅90个字节.free()如何知道要释放多少字节..?

Yu *_*Hao 7

这是非法的.

参数free必须是malloc由其表兄弟或空指针返回的指针.在您的示例中,p已更改其值p++.

  • 值得注意的是,`malloc`和`free`的典型实现在指针的可见部分之前存储分配的大小(可能与其他元信息一起).但是还有其他实现,例如使用外部树. (2认同)