[计算机] UE4C++ access violation 引擎崩溃问题

查看:1211 |回复:4 | 2022-2-15 08:48:08

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 DiGiToTo 于 2022-2-15 08:53 编辑

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

------导致这类问题的原因------
找了半天这个问题出现的原因,
排除了一切空指针访问,数组超界的情况后
最后锁定到了类似于这样的代码
void SomeClass::SomeFunction(){        
...code...        
static APlayerController* PC = UGameplayStatics::GetPlayerController(this,0);        
...code...
}
在某类中的某个函数里,声明了一个 “静态的” 全局指针变量
static APlayerController* PC;

注意:

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

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

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

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



2022-2-15 08:48:08  
 赞 赞 1

使用道具 登录

4个回答,把该问题分享到群,邀请大神一起回答。
2#
回复 收起回复
2022-4-11 09:30:17   回复
 赞 赞 1

使用道具 登录

3#
元素真是个好论坛啊,不错
回复 收起回复
2022-11-7 09:47:52   回复
 赞 赞 2

使用道具 登录

4#
回复 收起回复
2023-3-2 16:02:22   回复
 赞 赞 1

使用道具 登录

5#
回复 收起回复
2023-8-30 09:30:34   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表