我一直在阅读一些书籍,当涉及到使用指针/动态内存(或它们称为的堆或w / e)的类/函数时,我开始感到困惑。

是否有人能显示一个简单的......这样的简单示例,因为我正在使用的书籍使用的示例过于复杂(大型类或多个函数),因此很难遵循。无论如何,指针一直是我的弱点,但我了解BASIC指针,只是使用它们的类/函数有点令人困惑。

还有.....什么时候使用它们是另一个问题。

最佳答案

堆栈分配:

char buffer[1000];

这里1000必须是一个常数。当buffer超出范围时,内存将自动释放。

堆分配:
int bufsz = 1000;
char* buffer = new char[bufsz];
//...
delete [] buffer;

在这里,bufsz可以是一个变量。必须显式释放内存。

何时使用堆:
  • 您不知道在编译时需要多少空间。
  • 您希望内存/对象能够持久保存在当前范围之外。
  • 您需要大量内存(堆栈空间比堆空间更有限)
  • 关于c++ - 动态功能存储器? C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4761721/

    10-15 06:54