关于数组的在内存中分配的问题
我在看一本关于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 "是一个字符串,字符串都是在静态存储区