Я следующий C++ кода (сборку на Visual Studio 2013):C++ не может выделить слишком большой массив объектов на куче
MapGraph& MapGraph::operator= (const MapGraph& other)
{
if (this != &other)
{
this->primaryCopy = false;
this->edges = new int[other.edgeQty];
this->pointers = new int[other.vertexQty + 1];
this->contents = new int[other.vertexQty]();
this->weights = new NodeWeight[other.vertexQty];
массивов: края, указателей и содержимого созданы без проблем. Но когда дело доходит до , весит творения, это исключает исключение без каких-либо сведений. Исключение происходит в newaop.cpp (не мой файл проекта):
// newaop -- operator new[](size_t) REPLACEABLE
#include <new>
void *__CRTDECL operator new[](size_t count) _THROW1(std::bad_alloc)
{ // try to allocate count bytes for an array
return (operator new(count));
}
/*
* Copyright (c) 1992-2007 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V5.03:0009 */
Я понятия не имею, что происходит неправильно. Что интересно, если я заменю other.vertexQty (399) меньшим числом. Например:
this->weights = new NodeWeight[10];
Исключение не выбрасывается. Можете ли вы сказать мне, что не так?
Можете ли вы указать значение 'other.vertexQty' в момент исключения? – Flovdis
Пожалуйста, включите 'sizeof'' NodeWeight' в модуле исключения. –
Почему вы используете встроенные массивы и 'новые' в первую очередь? В любом случае, попробуйте отправить MCVE. –