假设,我写了一个函数如下:
void foo()
{
char *strArr[] = {"AA", "BB", "CC"};
...
}
strArr 会被分配到哪里?什么时候初始化?
出于某种原因,我记得这样的数组将在静态内存空间中分配,而不是在堆栈中并在程序启动时进行初始化,就好像我会在它前面写“static”一样。是假内存吗?
最佳答案
它具有自动存储功能,因此将分配在函数的堆栈上。元素属于此自动存储,但字符串文字本身存储在一个持久的、可能是只读的区域中。
关于c - 本地初始化字符串数组的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753905/