没有malloc或calloc的free()函数

jra*_*rez 4 c malloc calloc

快速的问题

你可以使用free()函数而不必事先调用malloc吗?

EI.

void someFunc( void )
{
   char str[6] = {"Hello"};

   //some processing here ....

   free(str);
}
Run Code Online (Sandbox Code Playgroud)

我没有编译错误,但这是否有效或者它是否正确?

谢谢,

Zab*_*bba 10

这一点都不正确:

  1. 你不能释放静态数组,如char str[6].
  2. free()只应在你分配的内存(或NULL)上调用.


Emi*_*l H 5

当您调用malloc()或任何其他分配函数时,将在堆上分配内存.这是唯一可以释放的内存.声明静态字符串时,就像在示例中所做的那样,字符串在编译时在另一个内存段中分配.对于在堆栈str上分配的指针本身也是如此,因此也不能释放.