Dan*_*lin 0 c++ memory exception
考虑以下场景,我std::bad_alloc通过多次实例化同一对象来强制执行异常,直到程序内存不足(使用这些值,循环在我的机器终止之前循环5019次):
#include <iostream>
using namespace std;
class myhash{
int* table;
public:
myhash(int size){
table = new int[size];
}
};
int main(){
for (int i=0; i<100000; i++){
cout<<i<<endl;
myhash* H = new myhash(100000);
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能做这样的事情,同时阻止程序终止?我想,使用delete,每个对象分配的内存将在实例化下一个之前被释放,从而可以在我想要的时候运行这个循环.但是,在将循环更改为:
for (int i=0; i<100000; i++){
cout<<i<<endl;
myhash* H = new myhash(100000);
delete H;
}
Run Code Online (Sandbox Code Playgroud)
该程序仍然崩溃,并且它几乎没有影响它在崩溃之前运行的周期数.这是什么原因,以及解决这个问题的正确方法是什么?
在你的类中添加一个析构函数:
~myhash()
{
delete[] table;
}
Run Code Online (Sandbox Code Playgroud)
你会被召唤 delete H;
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |