在静态内存上调用C free()函数(在非动态分配的内存上)

时间:2017-05-31 03:07:47

标签: c memory-management free

如果我用非动态分配的指针作为参数调用free()会发生什么?

E.g

some_struct foo;
function(&foo);

void function(some_struct* param){
    free(param);
}

谢谢!

1 个答案:

答案 0 :(得分:0)

这违反了规则,所以可能发生任何事情。 free()可能会打印错误消息。程序可能会因分段违规或其他内存访问错误而崩溃。可能会默默忽略该错误。或者错误可能导致malloc / free堆损坏,以至于在稍后调用malloc或free时可能会发生错误或崩溃。