如何释放在C中作为函数参数传递的字符数组

Mar*_*tin 2 c arrays character

我遇到了一个问题,我不确定这是否是一个问题.我有一个简单的C函数,它从字符串传递一个char*,如下所示:



 #include <stdio.h>
 #include <stdlib.h>

int main(int argc, char** argv) {

    passString("hello");

    return (EXIT_SUCCESS);
}

void passString(char * string) {
    // .... some code ....
    free(string); // ???
}

我被教导要释放我不再使用的每个内存块(主要是数组).所以我虽然也是自由字符串,但程序冻结或崩溃,即使这个简单的例子.我不确定我是否真的需要在这里释放字符串,如果是,我该如何实现呢?

Alo*_*ave 7

你不需要free你没有分配的内存malloc.

在您的示例string中没有malloc在您的程序中分配,因此您不需要释放它.string是一个字符串文字,并在只读内存(实现定义)中的某处分配,并自动释放.

对于standerdese粉丝:

参考文献:
c99标准:7.20.3.2该free功能

概要
#include
void free(void*ptr);

描述:
free函数导致ptr指向的空间被释放,即可用于进一步分配.如果ptr是空指针,则不执行任何操作.否则,如果该参数不匹配的指针早些时候返回calloc,mallocrealloc功能,或如果空间已释放通过调用free或者realloc,该行为理解过程定义网络.

返回
free函数不返回任何值.