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

tbl*_*lum 0 c memory variables memory-management initialization

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

void foo()
{
   char *strArr[] = {"AA", "BB", "CC"};
   ...
}
Run Code Online (Sandbox Code Playgroud)

strArr将被分配的位置?什么时候会被初始化?

出于某种原因,我记得这样的数组将被分配在静态存储空间中,而不是在堆栈上并在程序启动时初始化,就好像我会在它之前编写"静态"一样.这是假记忆吗?

cni*_*tar 5

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