Ограничения памяти в VS 2010 с C++ или просто еще одна ошибка?

У меня есть программа, которая использует много памяти для вычислений. Не слишком много, я думаю. Все массивы bif хранятся в куче, причины. MS VS 10 - моя IDE. Диспетчер задач в Windows говорит, что это занимает 1548 Кб. Я все еще пишу это, и в какой-то момент я добавил

bool* mask= new bool [numberOfUnknowns];

а также numberOfUnknowns около 1600, Он находится в публичном методе одного из классов (не уверен, имеет ли это значение). И я получаю

Необработанное исключение в 0x777615de в ProgrammName.exe: 0xC0000005: Место записи нарушения прав доступа 0x006a2000.

на этой линии. И это работает с жестко

new bool [10];

и терпит неудачу с

new bool [1600];

Итак, я достигаю возможного объема памяти? Или я должен проверить что-то еще? Я не верю, что я не могу получить больше памяти, потому что положить

double* a = new double [100000];

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

Дополнение 1:

Я поместил вызов метода, который содержит эту строку, перед всеми другими вызовами, и это сработало. Итак, я думаю, это проблема с памятью из-за того, что некоторая память была выделена / освобождена во время работы других методов моего класса. Итак, как это возможно? Должен ли я опубликовать еще немного кода или есть общее решение / описание для таких случаев?

Дополнение 2: И для std::vector - нужно выяснить, что не так сейчас, не хочу оставлять эту проблему без понимания. Спасибо за корректировку стиля поста!

1 ответ

Решение

Использовать std::vector, Ваша ошибка в основном заключается в доступе к памяти, которой вы больше не владеете - либо потому, что вы уже освободили ее, либо прошли ее конец или что-то в этом роде. Вам нужно использовать решение на основе классов, чтобы предотвратить эту проблему.

Другие вопросы по тегам