Objective C 中 NSString→const char* 转换的内存泄漏

问题描述 投票:0回答:0

another question我问了一个旁白,以确认我在下面的代码中使用

NSString
const char*
是正确的。我被要求删除这个,因为在一个帖子中提出了两个问题。

我下面的代码有效,但我可以看到内存消耗单调增长,所以我担心内存泄漏。尝试

free
字符串会导致“未分配释放的指针”;没有 Objective C 的经验,但这个段错误似乎是正确的行为,那么泄漏在哪里?

#include <Cocoa/Cocoa.h>
#include <CoreGraphics/CGWindow.h>

struct details {
   int wid;
   int pid;
   const char* name;
   const char* window;
};

int activeWindow(struct details *d)
{
    if (d == NULL) {
        return 0;
    }
    NSArray *windows = (NSArray *)CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements|kCGWindowListOptionOnScreenOnly,kCGNullWindowID);
    for(NSDictionary *window in windows){
        int WindowLayer = [[window objectForKey:(NSString *)kCGWindowLayer] intValue];
        if (WindowLayer == 0) {
            d->wid = [[window objectForKey:(NSString *)kCGWindowNumber] intValue];
            d->pid = [[window objectForKey:(NSString *)kCGWindowOwnerPID] intValue];
            d->name = [[window objectForKey:(NSString *)kCGWindowOwnerName] UTF8String];
            d->window = [[window objectForKey:(NSString *)kCGWindowName] UTF8String];
            return 1;
        }
    }
    return 0;
}
objective-c
© www.soinside.com 2019 - 2024. All rights reserved.