📜  会填满整个内存的C++程序

📅  最后修改于: 2021-05-30 06:35:12             🧑  作者: Mango

注意:我们强烈建议您在虚拟机中尝试此代码,因为它可能会在5秒钟内将您的计算机挂起

C / C++中的动态内存分配是指程序员手动执行内存分配。动态分配的内存分配在堆上,非静态和局部变量获取内存分配在堆栈上

新关键字
新的运算符表示在堆上分配内存的请求。如果有足够的内存可用,则new运算符将初始化该内存,并将新分配和初始化的内存的地址返回给指针变量。

使用new运算符的语法:要分配任何数据类型的内存,语法为

pointer-variable = new data-type;

删除关键字
删除将以更好,更轻松的方式执行分配和释放内存的任务。

使用delete运算符的语法:要分配任何数据类型的内存,语法为

delete pointer-variable; 

以下是C++程序,它将填满整个内存

#include
  
int main()
{
    while (true)
      int *a = new int;  // allocating 
}
  

输出与说明
当任务管理器打开时,它挂了我的计算机,并显示它在1秒钟内占用了890 Mb的内存,然后它也挂起了。它继续为变量提供内存。要探究此代码的更多内容,请添加一条语句delete a,并且在测试时一切都很好(没有挂起)。所以,我认为内存块已给出(由于new int),然后将其带回(由于删除a)到下面新代码中的可用空间。

缓解代码

#include
int main()
{
    while (true)
    {
         int *a = new int;   // allocating
         delete a;           // deallocating
    }
}  

参考
https://www.geeksforgeeks.org/new-and-delete-operators-in-cpp-for-dynamic-memory

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”