我一直在想,如果栈可以很容易地使用并且比堆快得多,为什么我们要使用堆......
看这段代码:-
int *i = new int; *i = 7;
(堆)
{ int i = 7; }
(堆)
如果我能够使用 { } 括号将它们存储在函数中并且在此之后自动删除变量,那么为什么我们仍然使用堆?
如果我接受用户输入,我可以使用像std::string
和getline
这样的安全函数....这将防止缓冲区溢出并在{}括号中使用它们也将节省内存
没有与此问题相关的视频/博客...
有几种情况你可能想要使用动态内存:
首先,堆栈内存中只能存储静态数据,这意味着您将无法在其中存储队列和向量。此外,与堆栈不同,堆可由多线程应用程序中的多个线程访问。当然,栈也很容易溢出,但是堆就没有这样的限制。例如,您将无法在函数内创建一个大数组,因为它会尝试写入堆栈内存。而在全局区域中,您可以