首页 > 系统相关 >记录一次C++内存泄露的检测过程

记录一次C++内存泄露的检测过程

时间:2023-11-09 11:57:24浏览次数:29  
标签:输出 对象 检测 C++ 内存 主人 泄露 buff

线上游戏长时间运行后, 占用内存比以前大很多, 发现游戏对象也得变多很多.主程尝试从最近改动过的代码检测, 做了小改动, 更新上线, 内存还是不断增加.
我提出用服务端根据聊天做个GM命令, 输出当前对象个数信息到日记. 更新上线, 手动输入gm命令, 比较几次日记, 方现对象是变多, 但不知道是哪个, 我修改输出内容, 按类型输出对象个数, 后面比较发现buff对象明显增多.
因为最近策划配置了很多dot的buff. 再修改日记输出信息, 如果是buf类型, 输出主人是否为空, 及主人的id,
后面内网测试, 发现多出来的buff的主人为空, 主人已经释放, buff对象没释放, 检测buff处理逻辑, 发现有一段buff从队列中取出, 但最后没释放, 加了一行buff->Dispose(); 后就解决了

标签:输出,对象,检测,C++,内存,主人,泄露,buff
From: https://www.cnblogs.com/barrysgy/p/17819367.html

相关文章

  • Redis内存淘汰策略
    内存淘汰策略分类早期版本的Redis有以下6种淘汰策略:noeviction:不淘汰任何数据,当内存不足时,新增操作会报错,Redis默认内存淘汰策略;allkeys-lru:淘汰整个键值中最久未使用的键值;allkeys-random:随机淘汰任意键值;volatile-lru:淘汰所有设置了过期时间的键值中最久未使用的键值......
  • 【深入理解Java虚拟机】内存分配策略
    本文内容来源于《深入理解Java虚拟机》一书,非常推荐大家去看一下这本书。本系列其他文章:【深入理解Java虚拟机】Java内存区域模型、对象创建过程、常见OOM【深入理解Java虚拟机】垃圾回收机制垃圾收集器与内存分配策略Java技术体系中所提倡的自动内存管理最终可以归结为自动......
  • 【misc】[HNCTF 2022 Week1]lake lake lake(JAIL) --沙盒逃逸,globals函数泄露全局变量
    查看附件内容这道题的逻辑就是可以让你输入1或者2,进入各自的函数去执行功能func函数:deffunc():  code=input(">")  if(len(code)>9):    returnprint("you'rehacker!")  try:    print(eval(code))  except:    pass......
  • CMake多个CMakeLists.txt共同合作编译一个C++项目
    一、概述在C++项目比较大或者要根据不同的规则生成不同的执行文件或者动态库/静态库的时候。单独的CMakeLists.txt会变的比较复杂,此时可以利用CMakeLists.txt的父子关系分目录分模块的进行编译及输出。就相当于项目模块化编译参考博客:【大丙课堂】二、具体实现......
  • C++跨DLL内存所有权问题探幽(一)DLL提供的全局单例模式
    最近在开发的时候,特别是遇到关于跨DLL申请对象、指针、内存等问题的时候遇到了这么一个问题。问题跨DLL能不能调用到DLL中提供的单例?问题比较简单,就是我现在有一个进程A,有DLLBDLLC,这两个DLL都依赖DLLD的单例,这个时候如果A调用了DLLB和DLLC,那么B和C能否正确引用到这个指......
  • 关于C++链接的一些理解
    无论是.h还是.cpp,都可以写声明或者实体,而且.h和.cpp的前面的名字相同不相同没有任何的影响最终一系列要连接的程序中,必须有且只有一个源文件有main函数,然后从这个main函数开始运行include的作用其实是跟define一样的,是纯文本替换进行替换之后,如果替换的内容是实体,那么就可以直......
  • c++简单的二分查找
    ints(intshuzu[],intlen,intx){ intlow=0,hight=len-1,mid; while(low<=hight) { mid=(low+hight)/2; if(shuzu[mid]==x)returnshuzu[mid]; elseif(shuzu[mid]<x)hight=mid-1; elselow=mid+1; } return-1;}i......
  • UE4 c++重构简单死亡之眼的效果
    虚幻社区中有蓝图教学视频使用C++重构,主要用到UGameplayStatics类中的SetGlobalTimerDilation方法,以及角色的相机管理器的调用,之后通过StartCameraFade方法实现显示效果UE4中的时间膨胀参考全局方法:SetGlobalTimerDilation(GetWorld(),Timer);对单个对象的时间膨胀:this->Cus......
  • 2309 c/c++二级
    5.话题焦点人物#include<bits/stdc++.h>usingnamespacestd;map<int,int>x;intmain(){intn,maxx=0,c;cin>>n;inta[n+1],b[n+1],k[n+1];for(inti=1;i<=n;i++){cin>>a[i]>>b[i];for(intj=1......
  • C++笔记 -- 使用STL的function实现回调机制(回调函数)
    1.使用普通函数示例一 代码:#include<iostream>#include<functional>//定义一个回调函数类型usingCallback=std::function<void(int)>;//定义一个函数,用于演示回调函数的使用voidperformOperation(intdata,Callbackcallback){//执......