我的问题是我有一个类,它应该使用一个名为“size”的long int,并使用它来动态创建一个结构数组。以下编译,但我得到一个运行时错误,说明如下:
错误“在抛出'std :: bad_alloc'的实例后调用终止what():std :: bad_alloc Aborted
struct PageEntry
{
..some stuff in here
};
class PageTable {
public:
PageTable(); //Default PageTable constructor.
PageTable(long int size); //PageTable constructor takes arrival time and execution time as parameter
~PageTable(); //PageTable destructor.
PageEntry *pageArray;
};
PageTable::PageTable(long int size)
{
cout << "creating array of page entries" << endl;
pageArray = new PageEntry[size]; //error occurs here
cout << "done creating" << endl;
}
如果我用数字替换“size”,即不会发生错误。 10000.有什么想法吗?
答案 0 :(得分:2)
我的猜测是,当你调用函数size
时,某种程度上最终会成为一些荒谬的数字或负数。尝试在功能中打印出来并告诉我们它是什么。你可能已经没有记忆了。
此外,请停止使用endl
,除非您具体指代'\n'
。
答案 1 :(得分:0)
尺寸可能为零吗?