UE4C++ access violation

3 篇文章 0 订阅

UE4静态变量访问冲突导致引擎崩溃的问题

------问题所导致的情况------
运行第一次一般不会有任何问题
运行第二次时,引擎崩溃,debug信息为access violation

------导致这类问题的原因------
找了半天这个问题出现的原因,
排除了一切空指针访问,数组超界的情况后
最后锁定到了类似于这样的代码

void SomeClass::SomeFunction()
{
	...code...
	static APlayerController* PC = UGameplayStatics::GetPlayerController(this,0);
	...code...
}

在某类中的某个函数里,声明了一个 “静态的” 全局指针变量
static APlayerController* PC;

注意:

这个变量的生命周期是整个引擎从第一次运行到关闭,而不是单次运行

所以,当第一次在引擎里运行时,这个变量被初始化(分配了内存地址)

第二次在引擎里运行时,由于这个变量已经在第一次运行时被分配了值,所以这个变量将不会再被赋值

所以也就导致第二次运行时访问了第一次运行时分配的内存地址,现在那个地址中所指的内容已经不再是原来的内容了,而你却访问了它

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值