在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;
}