读书人

关于数组的在内存中分配的有关问题

发布时间: 2012-02-23 22:01:35 作者: rapoo

关于数组的在内存中分配的问题

我在看一本关于C/C++的书,在讨论内存分配的问题时,有如下叙述:

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。

==========我想提问的是:有哪些情况数组可以在静态存储区上创建,哪些情况是在栈上创建的?
请给个例子,谢谢。

[解决办法]
例如有如下程序:

int a[10]; //全局数组,静态存储区创建

int fun()
{
int b[10]; //局部数组,栈内创建
}

int main()
{
int *p=(int *)malloc(sizeof(int)*10); //这是动态数组,堆上创建
}
[解决办法]
int fun()
{
static char p[]={ "sakjhkjshad "}; //也是在静态存储区域

}
[解决办法]
p= "123465 ";//这时p位于栈上的存储区,还是静态存储区?

p位于栈上 "123456 "位于静态存储区。
[解决办法]
p= "123465 ";//这时p位于栈上的存储区,还是静态存储区?


楼上正解.
因为p是在局部定义的变量,
而 "123456 "是一个字符串,字符串都是在静态存储区

读书人网 >C语言

热点推荐