gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:10:59 25 4
gpt4 key购买 nike

我遇到了一个问题,我不确定这是否是一个问题。我有一个简单的 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); // ???
}

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

最佳答案

您不需要 free未使用 malloc 分配的内存.

在您的示例中 string不是由 malloc 分配的在你的程序中,所以你不需要释放它。 string是一个字符串文字,分配在只读内存中的某个地方(实现定义)并自动释放。

对于标准的粉丝:

引用:
c99 标准:7.20.3.2 free功能

Synopsis
#include
void free(void *ptr);

Description:
The free function causes the space pointed to by ptr to be deallocated, that is, made available for further allocation. If ptr is a null pointer, no action occurs. Otherwise, if the argument does not match a pointer earlier returned by the calloc, malloc,or realloc function, or if the space has been deallocated by a call to free or realloc, the behavior is undefined.

Returns
The free function returns no value.

关于c - 如何释放在C中作为函数参数传递的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8285827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com