【问题标题】:Heap and stack in C Programming [closed]C编程中的堆和堆栈[关闭]
【发布时间】:2013-05-26 20:18:25
【问题描述】:

目前我正在学习内存管理中的 C 编程。

  • C 提供了哪些内存抽象?
  • 栈和堆的区别到底是什么?
  • 如何使用指针访问内存位置?
  • 如何在堆上分配和释放内存?

【问题讨论】:

  • 这些都是大话题,不是几句话就能回答的:)
  • 如果这都是关于 C 的,为什么它有一个 C++ 标签?两者之间的内存管理差异很大。
  • 如果您将其中任何一个要点输入到 StackOverflow 或 Google 的搜索框中,您会发现令人惊奇的结果。
  • 因为这些主题太大而无法回答,您可以搜索每个主题并分别从书籍或谷歌中学习:)这(stackoverflow.com/questions/79923/…)可能对您的第二个问题有所帮助。

标签: c memory heap-memory stack-memory


【解决方案1】:

非常简短:

  • 函数返回时,堆栈中的变量会丢失。中的变量 任何函数都可以访问堆,并且值不会丢失 直到他们被释放。因此,堆栈很有用,因为它们只是单个环境(函数)的“本地”。当我们需要在函数之间访问更多“全局”类型的数据时,堆非常有用。
  • int * p = 4。这意味着您已经创建了一个指向内存地址 4 的指针。
  • *p 被称为“解引用指针 p”,它基本上指向存储在 p 中的地址。您可以执行 *p = 100 之类的操作,这意味着将值 100 存储在 p 中存储的地址中。
  • 要在 c 中分配内存,请使用 malloc(...),可在此处找到文档:http://www.cplusplus.com/reference/cstdlib/malloc/
  • 要释放内存,请使用 free(...),可在此处找到文档:http://www.cplusplus.com/reference/cstdlib/free/

【讨论】:

  • 我建议你不要为他们做作业或回答问题如此公然违反常见问题解答
猜你喜欢
  • 1970-01-01
  • 2011-06-13
  • 2014-04-22
  • 2017-08-15
  • 2011-09-25
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多