在开发中遇到一个让我疑惑不解的问题, 由于要接收服务器的推送,我申明了一个 函数指针,提供给其它模块用来注册推送消息。我在接收socket 的类中使用了一个全局map
用来保存 注册的消息和回调函数指针 类似这样:
int iKey = k_KEYID(cModuleID, cmdID);
[lock_ lock];
iter_UdpNotify iter = g_udpNotify.find(iKey);
[lock_ unlock];
if (g_udpNotify.end() != iter) {
return -1;
}
[lock_ lock];
g_udpNotify.insert(value_UdpNotify(iKey, didNotify));
[lock_ unlock];
didNOtify 就是函数指针, 但是在使用 xcode 自带的 Instruments 跑leak时 发现在 insert 中总是报内存泄露, 换了各种方式均不能消除。 后来把声明的全局map 放在了类的成
员,在跑的话就不出 这个内存泄露了,
谁能告诉我这是为什么,函数指针做value时不能delete 的啊