Ограничения памяти в 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
, Ваша ошибка в основном заключается в доступе к памяти, которой вы больше не владеете - либо потому, что вы уже освободили ее, либо прошли ее конец или что-то в этом роде. Вам нужно использовать решение на основе классов, чтобы предотвратить эту проблему.