V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
PUBG98k
V2EX  ›  程序员

开发 mac app objective c 一个懵逼的 NSData 内存泄露疑问

  •  
  •   PUBG98k · 2020-09-23 17:37:19 +08:00 · 1647 次点击
    这是一个创建于 1547 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 while 循环下 执行
    NSData *data = [NSData dataWithBytes:buf length:size];
    。。。
    会引起 NSData 内存泄漏,
    只能等到循环结束后,才释放
    有大佬遇到过这个问题吗?知道如何解决吗?谢谢~

    void *buffer = (void*)malloc(pkt->data.frame.sz);
    memcpy(buffer, pkt->data.frame.buf, pkt->data.frame.sz);
    *data_p = [[NSData alloc] initWithBytesNoCopy:buffer length:pkt->data.frame.sz freeWhenDone:YES];
    // packet.videoPacket.data_p = data_p;
    // *free(buffer); // dataWithBytesNoCopy 不用这个 free
    4 条回复    2020-09-24 09:02:38 +08:00
    PUBG98k
        1
    PUBG98k  
    OP
       2020-09-23 18:44:56 +08:00
    一头雾水·
    yuan925
        2
    yuan925  
       2020-09-23 19:02:57 +08:00
    用 AutoReleasePool
    godblessumilk
        3
    godblessumilk  
       2020-09-24 01:59:19 +08:00 via Android
    是不是有野指针
    shawndev
        4
    shawndev  
       2020-09-24 09:02:38 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:58 · PVG 19:58 · LAX 03:58 · JFK 06:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.