在静态内存上调用的 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 时可能会发生错误或崩溃。
如果我使用非动态分配的指针作为参数调用 free() 会发生什么?
例
some_struct foo;
function(&foo);
void function(some_struct* param){
free(param);
}
谢谢!
这是违反规则的,所以几乎任何事情都有可能发生。 free()
可能会打印一条错误消息。该程序可能会因分段冲突或其他内存访问错误而崩溃。该错误可能会被静默忽略。或者该错误可能会导致 malloc/free 堆损坏,从而在稍后调用 malloc 或 free 时可能会发生错误或崩溃。