相关疑难解决方法(0)

堆栈和堆的内容和位置是什么?

编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,

  • 它们在哪里和它们(物理上在真实计算机的记忆中)?
  • 它们在多大程度上受操作系统或语言运行时控制?
  • 它们的范围是什么?
  • 是什么决定了它们的大小?
  • 是什么让一个更快?

language-agnostic heap stack memory-management dynamic-memory-allocation

7847
推荐指数
27
解决办法
145万
查看次数

在C++中适当的堆栈和堆使用?

我已经编程了一段时间,但它主要是Java和C#.我实际上从来没有必须自己管理内存.我最近开始用C++编程,我有点困惑的是什么时候我应该把东西存放在堆栈上以及何时将它们存储在堆上.

我的理解是,非常频繁访问的变量应该存储在堆栈中,对象,很少使用的变量和大型数据结构都应该存储在堆上.这是正确的还是我错了?

c++ heap stack memory-management c++-faq

121
推荐指数
5
解决办法
6万
查看次数

为什么你想要在堆而不是堆栈上分配内存?

可能重复:
何时最好使用堆栈而不是堆,反之亦然?

我已经阅读了关于堆与堆栈的其他一些问题,但它们似乎更关注堆/堆栈的作用而不是使用它们的原因.

在我看来,堆栈分配几乎总是首选,因为它更快(只需移动堆栈指针与在堆中查找可用空间),并且您在使用它时不必手动释放已分配的内存.我可以看到使用堆分配的唯一原因是,如果要在函数中创建对象,然后在函数作用域之外使用它,因为堆栈分配的内存在从函数返回后自动取消分配.

还有其他原因使用堆分配而不是我不知道的堆栈分配吗?

c memory heap stack memory-management

22
推荐指数
3
解决办法
1万
查看次数


C最佳实践,堆栈与堆分配

我最近一直在使用ca,发现我真的不喜欢处理内存管理,或者至少我认为如果我指向一个指针我必须释放它,即使它是最琐碎的事情.这导致我尽可能多地在堆栈上分配并使用&获取其位置.甚至创建单独的int和inptr变量(我在宏中使用&运算符时出现了一些左值问题).

我找不到很多地方需要处理数据传输(上/下)的地方.与此同时,我需要相当数量的早期回报(而且我宁愿避免得到).一般的c意见是什么?在特定情况下我是否应该使用其中一个或另一个明显的迹象.

PS让我有点担心的一件事是,我最近因为使用了错误的sizeof for malloc而出现了内存损坏问题而且我没有立即注意到它,因为我的大部分代码路径直接在那之后没有使用堆.你认为这种腐败隐藏的问题有多大?

c stack heap-memory

3
推荐指数
1
解决办法
2919
查看次数

C++类 - 点符号与指针

可能重复:
点(.)运算符和C++中的 - >有什么区别?

使用点符号和指针方式有什么区别?

使用或不使用指针实例化对象.

实例化w/oa指针=然后使用点表示法

实例化w/a指针=然后使用 - >

两者有什么不同?何时以及为什么要使用另一个?

c++

0
推荐指数
1
解决办法
6909
查看次数