Tag: 弃用了

如何处理MacOS / X 10.8.x中弃用的Carbon函数?

我有一个C ++代码库已经存在了一段时间(10年以上)并且它编译并运行良好,但我注意到当我在OS / X 10.8.x(Mountain Lion)下编译它时,编译器会发出关于的弃用警告它调用的一些Carbon函数: ../system/SetupSystem.cpp:575:44: warning: ‘UpTime’ is deprecated: first deprecated in OS X 10.8 [-Wdeprecated-declarations] ../system/SetupSystem.cpp:575:22: warning: ‘AbsoluteToNanoseconds’ is deprecated: first deprecated in OS X 10.8 [-Wdeprecated-declarations] ../system/SystemInfo.cpp:249:25: warning: ‘MPProcessors’ is deprecated: first deprecated in OS X 10.7 [-Wdeprecated-declarations] 我想将这个代码库升级到Apple批准的新方式(因此,如果/当Apple最终删除这些function时,避免警告和未来的痛苦),但我无法弄清楚新标准是什么。 我查看了developer.apple.com上的OS / X文档,但是我的搜索技能缺乏或者他们的文档都没有,因为我几乎找不到这些函数,也没有关于它们的替换。 我有的具体问题: 为什么不推荐使用这些function? 我应该打电话给哪些function? 是否有一些我不知道的秘密文档存储库会为我回答这些问题?

strcmp有什么问题?

在阅读字符串中的问题并将其与C进行比较的回答中 ,不止一个人不鼓励使用strcmp() ,说像 我也强烈建议你现在习惯使用strncmp(),以避免很多问题。 或( 为什么我的字符串比较失败? ) 确保你使用strncmp而不是strcmp。 strcmp非常不安全。 他们提到了什么问题? 强烈建议不要 使用带字符串说明符和gets() scanf() ,因为它们几乎不可避免地导致缓冲区溢出漏洞。 但是,使用strcmp()溢出缓冲区是不可能的,对吗? “缓冲区溢出或缓冲区溢出是一种exception现象,程序在将数据写入缓冲区时会超出缓冲区的边界并覆盖相邻的内存。” ( – 维基百科:缓冲区溢出 )。 由于strcmp()函数永远不会写入任何缓冲区,strcmp()函数不会导致缓冲区溢出,对吧? 人们不鼓励使用strcmp()的原因是什么,并推荐使用strncmp() ?

glibc弃用的__malloc_hookfunction的替代方案

我正在为C编写一个内存分析器,因为它通过malloc_hooks拦截对malloc , realloc和free函数的调用。 不幸的是,由于它们在multithreading环境中的不良行为而被弃用。 我找不到描述替代最佳实践解决方案的文档来实现同样的事情,有人可以启发我吗? 我已经读过一个简单的#define malloc(s) malloc_hook(s)可以解决这个问题,但是这对我想到的系统设置不起作用,因为它太过于干扰原始代码库而不适合用于分析/跟踪工具。 必须手动更改原始应用程序代码是任何体面的分析器的杀手。 最理想的是,我正在寻找的解决方案应该通过链接到可选的共享库来启用或禁用。 例如,我当前的设置使用用__attribute__ ((constructor))函数)声明的函数来安装拦截malloc挂钩。 谢谢