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

时间:2011-03-18 02:25:41

标签: c++ new-operator struct

我的问题是我有一个类,它应该使用一个名为“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.有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我的猜测是,当你调用函数size时,某种程度上最终会成为一些荒谬的数字或负数。尝试在功能中打印出来并告诉我们它是什么。你可能已经没有记忆了。

此外,请停止使用endl,除非您具体指代'\n'

答案 1 :(得分:0)

尺寸可能为零吗?