UE4静态变量访问冲突导致引擎崩溃的问题
------问题所导致的情况------
运行第一次一般不会有任何问题
运行第二次时,引擎崩溃,debug信息为access violation
------导致这类问题的原因------
找了半天这个问题出现的原因,
排除了一切空指针访问,数组超界的情况后
最后锁定到了类似于这样的代码
void SomeClass::SomeFunction()
{
...code...
static APlayerController* PC = UGameplayStatics::GetPlayerController(this,0);
...code...
}
在某类中的某个函数里,声明了一个 “静态的” 全局指针变量
static APlayerController* PC;
注意:
这个变量的生命周期是整个引擎从第一次运行到关闭,而不是单次运行
所以,当第一次在引擎里运行时,这个变量被初始化(分配了内存地址)
第二次在引擎里运行时,由于这个变量已经在第一次运行时被分配了值,所以这个变量将不会再被赋值
所以也就导致第二次运行时访问了第一次运行时分配的内存地址,现在那个地址中所指的内容已经不再是原来的内容了,而你却访问了它