楼主: geektcp

[通用] 内存泄露的小bug问题探讨和解决方案

[复制链接]

380

时沙

0

精华

7

主题

声望: 979   虚弱: 1

Lv.4(锻造者)

 楼主| 发表于 2024-4-28 11:26:00 | 显示全部楼层
yqsy 发表于 2024-4-28 09:43
恭喜楼主解决BUG,但是你到底改了哪些地方?还有究竟是什么原因导致宕机?否则这帖子无任何参考价值 ...

源码中没有PreCreate函数,这部分就是我加的
回复

使用道具 举报

380

时沙

0

精华

7

主题

声望: 979   虚弱: 1

Lv.4(锻造者)

 楼主| 发表于 2024-4-28 11:26:32 | 显示全部楼层
azerothcore 发表于 2024-4-28 09:53
你改的哪里呢,发来看看。!之前之后的对比。

PreCreate部分
回复

使用道具 举报

711

时沙

0

精华

19

主题

声望: 1495   虚弱: 3

Lv.4(锻造者)

发表于 2024-4-28 11:31:02 | 显示全部楼层
最新AZ端 意思是他没有你端的bug把 ,我看跟你写的大体一样。
  1. bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, uint32 phaseMask, float x, float y, float z, float ang, G3D::Quat const& rotation, uint32 animprogress, GOState go_state, uint32 artKit)
  2. {
  3.     ASSERT(map);
  4.     SetMap(map);
  5.     Relocate(x, y, z, ang);
  6.     m_stationaryPosition.Relocate(x, y, z, ang);
  7.     if (!IsPositionValid())
  8.     {
  9.         LOG_ERROR("entities.gameobject", "Gameobject (GUID: {} Entry: {}) not created. Suggested coordinates isn't valid (X: {} Y: {})", guidlow, name_id, x, y);
  10.         return false;
  11.     }
  12.     SetPhaseMask(phaseMask, false);
  13.     UpdatePositionData();
  14.     SetZoneScript();
  15.     if (m_zoneScript)
  16.     {
  17.         name_id = m_zoneScript->GetGameObjectEntry(guidlow, name_id);
  18.         if (!name_id)
  19.             return false;
  20.     }
复制代码
[发帖际遇]: azerothcore推倒一粒蛋,获得了狗蛋之颅,熬了一锅汤趁热喝下,获得1 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

发表于 2024-4-28 11:38:11 | 显示全部楼层
谢谢分享
回复

使用道具 举报

380

时沙

0

精华

7

主题

声望: 979   虚弱: 1

Lv.4(锻造者)

 楼主| 发表于 2024-4-28 11:42:16 | 显示全部楼层
azerothcore 发表于 2024-4-28 11:31
最新AZ端 意思是他没有你端的bug把 ,我看跟你写的大体一样。

肯定有啊,AZ也是一堆bug。 TC端35000个bug, AZ至少也有15000个bug
回复

使用道具 举报

1048

时沙

0

精华

0

主题

声望: 4049   虚弱: 0

Lv.6(觉醒者)

炉石

发表于 2024-4-28 14:47:59 | 显示全部楼层
这个就太高深了 只能高呼 大神牛逼~
回复

使用道具 举报

54

时沙

0

精华

0

主题

声望: 423   虚弱: 1

Lv.3(忠诚者)

发表于 2024-4-28 16:42:20 | 显示全部楼层
感谢你的分享
回复

使用道具 举报

380

时沙

0

精华

7

主题

声望: 979   虚弱: 1

Lv.4(锻造者)

 楼主| 发表于 2024-4-28 20:30:13 | 显示全部楼层
okgoba 发表于 2024-4-28 14:47
这个就太高深了 只能高呼 大神牛逼~

哪里,只是略知一二。
[发帖际遇]: geektcp得到一根金属香蕉,与泰奶奶达成某种不可告人的交易,获得159 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

206

时沙

0

精华

1

主题

声望: 112   虚弱: 0

Lv.2(潜行者)

发表于 2024-4-30 15:45:00 | 显示全部楼层

太深奥了,看不懂
回复

使用道具 举报

609

时沙

1

精华

20

主题

声望: 7793   虚弱: 0

Lv.6(觉醒者)

发表于 2024-5-5 23:29:39 | 显示全部楼层
对于内存泄漏,你理解上出了问题
你这种不叫内存泄漏,很明显的问题是空指针,导致内存访问违规,试图访问未初始化或已释放的内存地址
错误的发生在尝试创建或从数据库加载游戏对象时。可能是由于传递给这些函数的参数无效或不完整导致的,具体需要通过调试可以查看到问题

而你增加了的函数PreCreate,正好是一个典型的对象验证和预处理函数,增加了无效参数的检测,确保在对象正式创建前所有必要的条件都得到满足,从而避免游戏运行时的错误或异常行为

回复

使用道具 举报

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