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

C free() function called on static memory (on not dynamically allocated memory)

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

some_struct foo;
function(&foo);

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

谢谢!

这是违反规则的,所以几乎任何事情都有可能发生。 free() 可能会打印一条错误消息。该程序可能会因分段冲突或其他内存访问错误而崩溃。该错误可能会被静默忽略。或者该错误可能会导致 malloc/free 堆损坏,从而在稍后调用 malloc 或 free 时可能会发生错误或崩溃。