我有以下c ++代码(在Visual Studio 2013上构建):
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];
阵列: edge ,指针和内容创建没有问题。但是当涉及权重创建时,它会抛出没有信息的异常。 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];
不抛出异常。你能告诉我出了什么问题吗?
答案 0 :(得分:0)
在线
this->contents = new int[other.vertexQty]();
你有额外的&#34;()&#34;在末尾。 由于功能:
new[](size_t)
需要一个字节大小而你没有传递它,它会抛出一个异常或分配一个未知大小的内存,因此下面的创建工作的数量很少。
我认为删除它应该有用。