我的问题是我有一个类,该类应使用一个长整数int,该整数称为“ size”,并使用它动态创建结构数组。可以编译以下内容,但出现以下运行时错误:
错误“终止引发后抛出'std :: bad_alloc'what()的实例what():std :: bad_alloc中止
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;
}
如果我用数字代替“大小”,则不会发生该错误。 10000。有什么想法吗?
最佳答案
我的猜测是,当您调用函数size
时,某种程度上最终会变成一个非常大的数字或负数。尝试将其打印出功能并告诉我们它是什么。您可能内存不足。
另外,除非您是故意使用endl
代替'\n'
,否则请停止使用。