• 请不要在回答技术问题时复制粘贴 AI 生成的内容
PUBG98k
V2EX  ›  程序员

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

  •  
  •   PUBG98k · Sep 23, 2020 · 2070 views
    This topic created in 2072 days ago, the information mentioned may be changed or developed.
    在 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 replies    2020-09-24 09:02:38 +08:00
    PUBG98k
        1
    PUBG98k  
    OP
       Sep 23, 2020
    一头雾水·
    yuan925
        2
    yuan925  
       Sep 23, 2020
    用 AutoReleasePool
    godblessumilk
        3
    godblessumilk  
       Sep 24, 2020 via Android
    是不是有野指针
    shawndev
        4
    shawndev  
       Sep 24, 2020
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3262 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 11:57 · PVG 19:57 · LAX 04:57 · JFK 07:57
    ♥ Do have faith in what you're doing.