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); // ???
}
我被教导要释放我不再使用的每个内存块(主要是数组).所以我虽然也是自由字符串,但程序冻结或崩溃,即使这个简单的例子.我不确定我是否真的需要在这里释放字符串,如果是,我该如何实现呢?
你不需要free你没有分配的内存malloc.
在您的示例string中没有malloc在您的程序中分配,因此您不需要释放它.string是一个字符串文字,并在只读内存(实现定义)中的某处分配,并自动释放.
对于standerdese粉丝:
参考文献:
c99标准:7.20.3.2该free功能
概要
#include
void free(void*ptr);描述:
该free函数导致ptr指向的空间被释放,即可用于进一步分配.如果ptr是空指针,则不执行任何操作.否则,如果该参数不匹配的指针早些时候返回calloc,malloc或realloc功能,或如果空间已释放通过调用free或者realloc,该行为理解过程定义网络.返回
该free函数不返回任何值.
| 归档时间: |
|
| 查看次数: |
2188 次 |
| 最近记录: |