[讨论][经验]数组的在内存中分配
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
问题:
有哪些情况数组可以在静态存储区上创建,哪些情况是在栈上创建的?
如果:
int fun()
{
int b[10]; //局部数组,栈内创建
int *p;
p="123465";//这时p位于栈上的存储区,还是静态存储区?p位于栈上 "123456"位于静态存储区。
}
例如有如下程序:
(1)
int a[10]; //全局数组,静态存储区创建
int fun()
{
int b[10]; //局部数组,栈内创建
}
int main()
{
int *p=(int *)malloc(sizeof(int)*10); //这是动态数组,堆上创建
}
(2)
int fun()
{
static char p[]={"sakjhkjshad"}; //也是在静态存储区域
}
如果还有什么意见请回帖。
[此贴子已经被作者于2007-8-25 0:53:48编辑过]