c - 我创建这个数组时分配的内存在哪里? (C)

标签 c string memory-management

假设我做了类似的事情:

char* test[] = {"foo","bar","car"};

如果我做的很远,这到底等同于什么?这是自动创建我需要释放的内存吗?我只是有点困惑。谢谢。

最佳答案

您正在声明一个指针数组。指针指向字符串文字。

变量test遵循正常规则,如果它是一个自动变量(某个函数内的范围),当超出函数时,它超出范围,所以你不必释放内存。如果它是静态分配的(全局或 static 变量),它的生命周期与程序一样长,因此您也不必释放内存。

指针指向的字符串文字具有静态存储,因此您也不要释放它们。

关于c - 我创建这个数组时分配的内存在哪里? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19086769/

相关文章:

C - 从文件中读取句子到 malloc 创建的字符串数组中

C++ const char* 到 std::string &

c++ - 分配的内存块应该按什么顺序被释放?

python 没有足够的 RAM 使用磁盘空间而不是 RAM

java - 如何使用 RegExp 将一个字符串替换为另一个字符串,并且替换的字符串将包含第一个字符串的参数

python - 增量构建一个 numpy 数组并测量内存使用情况

c - 在c程序中请求int时输入char时如何防止崩溃

c - 在 libwget 中启用 cookie 会导致段错误

c - 数据包中的奇怪字符

java - 在 getter 方法中,我应该克隆返回的字符串吗?