我的问题是我有一个类,该类应使用一个长整数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',否则请停止使用。

09-07 07:30