本地静态和局部变量的内存分配

时间:2011-04-28 07:08:10

标签: c unix

1

void main(void)
{
  int *ptr1;
  ptr1 = (int *)malloc(..);
}

2

void main(void)
{
  static int *ptr2;
  ptr2 = (int *)malloc(..);
}

我想问一下ptr1&的内存分配是怎么做的。 PTR2?

1 个答案:

答案 0 :(得分:10)

ptr1指针本身在堆栈上分配。 ptr1指向堆上的内存。

ptr2指针本身是在程序启动时分配的(在调用main之前)并且是全局的,但恰好只在main中可见,因为它在其范围内声明。 ptr2也指向堆上的内存。

ptr2之外声明main只会使其在其下方的所有功能中都可见,但其存储空间将相同。

相关问题