扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 98|回复: 0

[转载发布] 内存泄漏导致创建bitmap失败

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-4-27 05:27
  • 签到天数: 128 天

    连续签到: 1 天

    [LV.7]常住居民III

    2359

    主题

    431

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    11529
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    14347

    灌水之王

    发表于 2025-4-29 15:45:37 | 显示全部楼层 |阅读模式
    报错日志:
    LOG 代码
    1. Script 'Cache' line 100: RGSSError occurred.
    2. failed to create bitmap
    复制代码


    报错代码:
    RUBY 代码
    1. # encoding: utf-8
    2. #==============================================================================
    3. # ■ Cache
    4. #------------------------------------------------------------------------------
    5. #  各種グラフィックを読み込み、Bitmap オブジェクトを作成、保持するモジュール
    6. # です。読み込みの高速化とメモリ節約のため、作成した Bitmap オブジェクトを内部
    7. # のハッシュに保存し、同じビットマップが再度要求されたときに既存のオブジェクト
    8. # を返すようになっています。
    9. #==============================================================================
    10. module Cache
    11.   #--------------------------------------------------------------------------
    12.   # ● アニメーション グラフィックの取得
    13.   #--------------------------------------------------------------------------
    14.   defself.animation(filename, hue)
    15.     load_bitmap("Graphics/Animations/", filename, hue)
    16.   end
    17.   #--------------------------------------------------------------------------
    18.   # ● 戦闘背景(床)グラフィックの取得
    19.   #--------------------------------------------------------------------------
    20.   defself.battleback1(filename)
    21.     load_bitmap("Graphics/Battlebacks1/", filename)
    22.   end
    23.   #--------------------------------------------------------------------------
    24.   # ● 戦闘背景(壁)グラフィックの取得
    25.   #--------------------------------------------------------------------------
    26.   defself.battleback2(filename)
    27.     load_bitmap("Graphics/Battlebacks2/", filename)
    28.   end
    29.   #--------------------------------------------------------------------------
    30.   # ● 戦闘グラフィックの取得
    31.   #--------------------------------------------------------------------------
    32.   defself.battler(filename, hue)
    33.     load_bitmap("Graphics/Battlers/", filename, hue)
    34.   end
    35.   #--------------------------------------------------------------------------
    36.   # ● 歩行グラフィックの取得
    37.   #--------------------------------------------------------------------------
    38.   defself.character(filename)
    39.     load_bitmap("Graphics/Characters/", filename)
    40.   end
    41.   #--------------------------------------------------------------------------
    42.   # ● 顔グラフィックの取得
    43.   #--------------------------------------------------------------------------
    44.   defself.face(filename)
    45.     load_bitmap("Graphics/Faces/", filename)
    46.   end
    47.   #--------------------------------------------------------------------------
    48.   # ● 遠景グラフィックの取得
    49.   #--------------------------------------------------------------------------
    50.   defself.parallax(filename)
    51.     load_bitmap("Graphics/Parallaxes/", filename)
    52.   end
    53.   #--------------------------------------------------------------------------
    54.   # ● ピクチャ グラフィックの取得
    55.   #--------------------------------------------------------------------------
    56.   defself.picture(filename)
    57.     load_bitmap("Graphics/Pictures/", filename)
    58.   end
    59.   #--------------------------------------------------------------------------
    60.   # ● システム グラフィックの取得
    61.   #--------------------------------------------------------------------------
    62.   defself.system(filename)
    63.     load_bitmap("Graphics/System/", filename)
    64.   end
    65.   #--------------------------------------------------------------------------
    66.   # ● タイルセット グラフィックの取得
    67.   #--------------------------------------------------------------------------
    68.   defself.tileset(filename)
    69.     load_bitmap("Graphics/Tilesets/", filename)
    70.   end
    71.   #--------------------------------------------------------------------------
    72.   # ● タイトル(背景)グラフィックの取得
    73.   #--------------------------------------------------------------------------
    74.   defself.title1(filename)
    75.     load_bitmap("Graphics/Titles1/", filename)
    76.   end
    77.   #--------------------------------------------------------------------------
    78.   # ● タイトル(枠)グラフィックの取得
    79.   #--------------------------------------------------------------------------
    80.   defself.title2(filename)
    81.     load_bitmap("Graphics/Titles2/", filename)
    82.   end
    83.   #--------------------------------------------------------------------------
    84.   # ● ビットマップの読み込み
    85.   #--------------------------------------------------------------------------
    86.   defself.load_bitmap(folder_name, filename, hue = 0)
    87.     @cache ||= {}
    88.     if filename.empty?
    89.       empty_bitmap
    90.     elsif hue == 0
    91.       normal_bitmap(folder_name + filename)
    92.     else
    93.       hue_changed_bitmap(folder_name + filename, hue)
    94.     end
    95.   end
    96.   #--------------------------------------------------------------------------
    97.   # ● 空のビットマップを作成
    98.   #--------------------------------------------------------------------------
    99.   defself.empty_bitmap
    100.     Bitmap.new(32, 32)# 报错代码
    101.   end
    102.   #--------------------------------------------------------------------------
    103.   # ● 通常のビットマップを作成/取得
    104.   #--------------------------------------------------------------------------
    105.   defself.normal_bitmap(path)
    106.     @cache[path] = Bitmap.new(path)unlessinclude?(path)
    107.     @cache[path]
    108.   end
    109.   #--------------------------------------------------------------------------
    110.   # ● 色相変化済みビットマップを作成/取得
    111.   #--------------------------------------------------------------------------
    112.   defself.hue_changed_bitmap(path, hue)
    113.     key = [path, hue]
    114.     unlessinclude?(key)
    115.       @cache[key] = normal_bitmap(path).clone
    116.       @cache[key].hue_change(hue)
    117.     end
    118.     @cache[key]
    119.   end
    120.   #--------------------------------------------------------------------------
    121.   # ● キャッシュ存在チェック
    122.   #--------------------------------------------------------------------------
    123.   defself.include?(key)
    124.     @cache[key] && !@cache[key].disposed?
    125.   end
    126.   #--------------------------------------------------------------------------
    127.   # ● キャッシュのクリア
    128.   #--------------------------------------------------------------------------
    129.   defself.clear
    130.     @cache ||= {}
    131.     @cache.clear
    132.     GC.start
    133.   end
    134. end
    复制代码


    游戏总是没有缘由的闪退,用x32dbg下断点查了一下发现有一个没显示的弹窗,居然是无法创建bitmap
    尝试复现时发现游戏在缓慢的增加最低内存占用,疑似跟内存泄漏有关
    在网上查了一下基本都是因为加密打包,跟我的情况没关系
    请问各位有什么解决方法吗,逆向rgss的伪代码看的头疼
                本帖来自P1论坛作者予纾2606,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=497327  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-5-9 21:30 , Processed in 0.139276 second(s), 58 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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