1。

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


2。

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


我想问一下如何为ptr1和ptr2进行内存分配?

最佳答案

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

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

ptr2之外声明main只会使它在其下面的所有函数中可见,但其存储将是相同的。

10-08 00:27