динамически размещать массив структур с C ++ - PullRequest
0 голосов
/ 18 марта 2011

Моя проблема в том, что у меня есть класс, который должен принимать длинное int, называемое "size", и использовать его для динамического создания массива структур.Следующие компиляции, но я получаю ошибку во время выполнения, которая говорит следующее:

error "прерывается, вызывается после создания экземпляра '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;
}

Ошибка не произойдет, если я заменю «размер» на число, т. Е. 10000. Есть мысли?

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Я предполагаю, что когда вы вызываете функцию, size каким-то образом оказывается каким-то смехотворно большим числом или отрицательным. Попробуйте распечатать его внутри функции и рассказать нам, что это такое. Возможно, вам не хватает памяти.

Кроме того, прекратите использовать endl, если вы не имеете в виду это конкретно вместо '\n'.

0 голосов
/ 18 марта 2011

Возможно ли, что размер мог быть нулевым?

...