我有这个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()如何知道要释放多少字节..?
答案 0 :(得分:7)
这是非法的。
free
的参数必须是由malloc
或其表兄弟或空指针返回的指针。在您的示例中,p
已将其值更改为p++
。