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

发布于 2024-11-04 03:26:22 字数 243 浏览 0 评论 0原文

1.

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

2.

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

我想问ptr1 & 的内存分配是如何完成的? ptr2?

1.

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

2.

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

I want to ask how is memory allocation done for ptr1 & ptr2?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自演自醉 2024-11-11 03:26:22

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

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

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

The ptr1 pointer itself is allocated on the stack. ptr1 points to memory on the heap.

The ptr2 pointer itself is allocated on program startup (before main is invoked) and is global but just happens to be visible only in main because it is declared in its scope. ptr2 points to memory on the heap as well.

Declaring ptr2 outside of main would only make it visible in all functions below it, but its storage will be the same.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文