C++ 使用C+动态分配结构数组+;

C++ 使用C+动态分配结构数组+;,c++,new-operator,struct,C++,New Operator,Struct,我的问题是我有一个类,它应该使用一个名为“size”的长int,并使用它动态创建一个结构数组。以下代码已编译,但我得到一个运行时错误,该错误说明如下: error“在抛出'std::bad_alloc'的实例后调用terminate what():std::bad_alloc中止 struct PageEntry { ..some stuff in here }; class PageTable { public: PageTable(); //Default PageTabl

我的问题是我有一个类,它应该使用一个名为“size”的长int,并使用它动态创建一个结构数组。以下代码已编译,但我得到一个运行时错误,该错误说明如下:

error“在抛出'std::bad_alloc'的实例后调用terminate 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;
}
struct页面条目
{
这里有些东西
};
类页表{
公众:
PageTable();//默认的PageTable构造函数。
PageTable(long int size);//PageTable构造函数将到达时间和执行时间作为参数
~PageTable();//PageTable析构函数。
PageEntry*pageArray;
};
PageTable::PageTable(长整型大小)
{

难道大小可能是零吗?

我的猜测是,当你调用函数
size
时,不知何故最终会变成一个可笑的大数字或负数。试着在函数内部打印出来,告诉我们它是什么。你可能已经耗尽了内存


另外,停止使用
endl
,除非你特别想用它来代替
'\n'

大小的值是多少?你还没有告诉我们你怎么称呼它。用
int
代替
long int size
?你不需要长的。你用的是哪个编辑值?我猜你的内存已经用完了。”有什么想法吗?“使用向量。0是合法的(5.3.4/7),但负数是不好的。谢谢。这肯定是问题所在。还有,“endl”是什么"具体的意思是?@Robin:它说在流中插入一个
'\n'
,然后刷新缓冲区。这是缓冲区刷新的问题。它经常会减慢速度。如果您正在调试输出,请使用总是刷新的
cerr
。有关更多详细信息,请参阅此问题:如果您正在向控制台写入,为什么不希望刷新刷新?@user666412-这是一个坏习惯。另外,谁说你总是在控制台上写东西。在Unix中,重定向程序的输入或输出是很常见的。阻止高效地执行这项操作似乎是非常错误的。