正确使用C中的free()函数

DDe*_*eme 3 c free buffer pointers

我是C编程语言的新手,所以你能告诉我这是否是正确的方法.

例如:缓冲区上的程序点,我将其pointer用作free()函数中的参数.那么,这个功能会导致什么问题呢?

gio*_*gim 6

你叫免费的已分配的内存返回指针malloc/calloc/realloc 只.

例如

char* ptr=malloc(10); 

// use memory pointed by ptr 
// e.g., strcpy(ptr,"hello");

free(ptr); // free memory pointed by ptr when you don't need it anymore
Run Code Online (Sandbox Code Playgroud)

要记住的事情:

  1. 永远不要释放记忆两次 这是可以做到:(1)如果你调用free上ptr两倍和价值ptr,因为第一次调用没有改变free(2)你必须指向相同的内存两个不同的指针; 如果您在一个上免费拨打电话free,则现在也不允许您拨打第二个指针

  2. 释放指针时,甚至不允许读取其值; 例如,if (ptr)除非您初始化ptr为新值,否则在释放后不允许

  3. 当然你也不应该取消引用释放的指针

  4. 正如@chqrlie指出的那样,我还要在这里添加一个空指针也是完全可以的free,它只会做什么