Я наткнулся на странную проблему, в которой я не могу понять. Я не эксперт на C/C++, так что несите меня. У меня есть класс NPC, который происходит из класса Player, который происходит из класса Sprite. Класс спрайтов содержит функцию setupAnimation, которая выделяет массив поплавков, содержащих координаты на текстуре, каждый элемент массива относится к кадру анимации. Это все хорошо и прекрасно работает.Ошибка распределения памяти
Однако проблема возникает, когда я добавляю массив указателей в класс NPC. Эти указатели имеют тип класса Item. Когда я добавляю этот массив, он отлично работает, если массив мал (10 был размером, который я тестировал), но будет сбой при распределении массива поплавков для координат текстуры, упомянутых ранее, если размер немного больше (100 был размером I испытано).
Вот некоторые фрагменты кода, показывающие материал я уже упоминал выше:
пункт, класс массив указателей:
engItem* itsLoot[100]; // With 100 here, the crash occurs as shown below
координаты текстуры и их распределение двойники:
GLfloat* itsTextureXData;
GLfloat* itsTextureYData;
...
animationFile >> frameCount; // Tested, the value is correct
engDeallocate(getTextureXData(), true); // Works fine
itsTextureXData = new GLfloat[frameCount]; // This is where the crash occurs
engDeallocate(getTextureYData(), true);
itsTextureYData = new GLfloat[frameCount];
Это фрагмент кода является основой каждого класса, который происходит из класса Sprite. Я не понимаю, почему дополнительные 90 указателей вызывают проблему во время размещения поплавка. Просто немного информации о программном обеспечении, чтобы пойти с этим
ОС: Windows Vista 32-битной, компилятор: Visual C++ 9.0, среда Программа памяти: ~ 17,600k, Системная память: ~ 2GB
Имея это в виду, Я не могу видеть, что память работает сухая, и я не могу связать, как массив указателей приводит к сбою распределения. Как уже упоминалось, распределение работает отлично во всех других классах, полученных из Sprite (а также с помощью Sprite), но как только этот массив указателей добавлен в класс NPC, NPC больше не будет распределять этот массив массивов данных текстур без сбоев.
Что такое крах? То есть, что такое callstack и код исключения или assert, если они доступны? – MSN