2012-04-21 2 views
3

У меня есть этот код на конструктор класса:bad_alloc при выделении массива

verts=new GLfloat[nVerts]; 

VERTS является переменной-члена класса (GLfloat *) и nVerts равно 4. Что-то не так с этим кодом? Я получаю ту же ошибку. Если я пытаюсь сделать malloc (sizeof (GLfloat) * nVerts) Я думаю, что у меня не хватает памяти, потому что если я изменю эту строку кода на другую часть кода (например, метод, который вызывает конструктор просто перед вызовом, как это: GLfloat *test=new GLfloat[4] он работает)

+4

Да, что не так, что вы никогда не должны использовать 'new []'. Всегда идите 'std :: vector '. – Puppy

+2

Держу пари, что 'nVerts' фактически неинициализирован. –

+0

@sth нет, это просто 4. – XaitormanX

ответ

4

Я бы проверить 3 вещи:

  1. вы 100% уверены, что nVerts это 4?
  2. Разве память не исчерпана?
  3. Разве ваша куча не повреждена? valgrind может помочь вам в этом.
+1

2 может произойти, например, если вы выделяете много таких объектов в цикле, и вы забыли написать правильный деструктор. –

Смежные вопросы