我有这个结构:
struct event_ {
bool is_crossover = false;
bool is_birth = false;
bool is_repetitive = false;
int eID = 0;
bool inicio_fin = false;
fecha inicio_fecha;
fecha fin_fecha;
locacion inicio_l;
string eLatitud_i = 0;
string eLongitud_i = 0;
locacion fin_l;
string eLatitud_f = 0;
string eLongitud_f = 0;
personaje_info personajes_evento; //This is a class
int cantidad_personajes = 0;
string nombre;
string descripcion;
string tipo_evento;
event_ *sig, *ant;
};
然后,当我调用该函数时:
event_ *n = new event_;
它向我发送了访问冲突错误:
Exception thrown at 0x0F69F6E0 (ucrtbased.dll) in Auxiliar Libros.exe: 0xC0000005: Access violation reading location 0x00000000.
任何人都知道为什么会这样吗? 作为附加信息,我运行了代码度量分析,在此之前,该程序运行良好。而且它还告诉我有关异常的信息,我该怎么办?
答案 0 :(得分:0)
要解决您的问题,我认为最好的办法是减少代码并尝试一些组合。
首先,您必须尝试仅使用一个struct
变量的一点bool
来查看新函数是否正确
struct event_
{
bool is_crossover = false;
};
event_ *n = new event_;
如果您的程序继续崩溃,则错误在new()中。
否则,您可以尝试减少结构,以消除您认为正确的内容。
老实说,我认为您的所有bool
,int
和event_
声明都是正确的,因此我将其删除。
我认为类似的对象声明也可以删除,而我也将它们删除。
我具有以下结构:
struct event_
{
fecha fin_fecha;
locacion inicio_l;
string eLatitud_i = 0;
personaje_info personajes_evento;
};
构建并运行此代码时会发生什么?
如果您的程序已停止崩溃,则错误在于已删除的代码中?
否则,此新结构的一个(或多个)声明行不正确。
如果更改结构对代码的影响太大,请创建一个类似的结构(尚未使用的其他名称)并进行测试。
请,您可以尝试吗?我认为您会发现自己会很快解决问题!
您的第一个代码中有太多变量会导致崩溃?