免费提供动态分配的内存

时间:2014-10-07 05:41:39

标签: c pointers malloc free

我有这个C代码:

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

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

    free(p);

    return 0;
}

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

1 个答案:

答案 0 :(得分:7)

这是非法的。

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