查询与C中的free()相关

Leo*_*ssi 3 c free

如果您尝试释放未使用的内存,会发生什么malloc/calloc

这就是我的意思:

void main()
{
int temp = 0;
int *ptr = &temp;
free(ptr);
}
Run Code Online (Sandbox Code Playgroud)

我以为free()会返回一些错误代码,但free()没有返回值.

Mal*_*olm 8

如果调用free()之前未分配的指针,则会触发未定义的行为.

来自Linux手册页:

free()函数释放ptr指向的内存空间,该内存空间必须由之前调用malloc(),calloc()或realloc()返回.否则,或者如果之前已经调用了free(ptr),则会发生未定义的行为.如果ptr为NULL,则不执行任何操作.