c - 本地初始化字符串数组的内存分配

标签 c variables memory memory-management initialization

假设,我写了一个函数如下:

void foo()
{
   char *strArr[] = {"AA", "BB", "CC"};
   ...
}

strArr 会被分配到哪里?什么时候初始化?

出于某种原因,我记得这样的数组将在静态内存空间中分配,而不是在堆栈中并在程序启动时进行初始化,就好像我会在它前面写“static”一样。是假内存吗?

最佳答案

它具有自动存储功能,因此将分配在函数的堆栈上。元素属于此自动存储,但字符串文字本身存储在一个持久的、可能是只读的区域中。

关于c - 本地初始化字符串数组的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753905/

相关文章:

c - 将文本放入 scanf 会使代码输出随机数?

c - 如何检索加载我的 dll 的线程的地址

xslt - 使用xsl :variable in a xsl:foreach select statement

c# - 局部变量 - switch case

c - 整数的内存分配

ios - Xcode 分配工具生成

c - 我有一个函数,它有 int a 和 int b 我所要做的就是找到最大值

c - 我的代码不适用于大输入

php - 在变量中存储 PHP 语法

c++ - openssl:减少内存使用