c - Mac OS Catalina sbrk 已弃用
问题描述
我正在尝试在 C 中实现自己的内存分配器。当我尝试在 Mac OS Catalina 的终端中编译我的代码时,它说函数“sbrk”已被弃用。有人知道解决此问题的解决方案吗?其他在线解决方案似乎有点过时了。
解决方案
在实践中,“弃用”一词(如相关的“过时”一词)至少可以表示三种不同的含义:
- 此功能预计将在 { software, standard } 的未来版本中删除。您使用它的代码可能会停止工作。
- 我们认为这个功能不好,我们认为你不应该使用它。
- 我们想到了此功能的更好版本。我们认为您应该改用它。
很多时候,这些含义是结合使用的。一个例子是 C 库函数gets()
,几乎每个人都同意它是 Bad (所以意思是 #2 适用),实际上现在已经从 C 标准中删除了(所以意思 #1 也适用)。
据我所知,sbrk
是意义#3 的一个例子。它没有什么特别的问题,但是有更好、更现代的方法来做同样的事情——尽管新的方法也可能更复杂,这意味着如果你想保留旧的方法,就有动力去做事情很简单。此类事情的其他示例是系统调用signal
和creat
.
冒着编辑的风险(好吧,我承认,我在编辑),这意味着当涉及到语言或标准的演变时,#3 会变得有趣。如果你相信向后兼容性和长期稳定性,如果你相信程序员应该能够编写善意的代码并让它永远运行,那么你就不会仅仅因为意义 3 适用就向他们抛出意义 #1。但是如果你想强迫人们像你一样思考,如果你已经放弃了软件稳定性(因为一切都在不断地被重写以跟上新功能、新错误和新变化的标准),如果你认为向后兼容性是向后的,工作量太大,你可以一直使用含义#1,即使它让我上树。:-(
推荐阅读
- ios - UIApplicationDelegate openURL 与多个文件
- php - Docker php:fpm-alpine:如何安装 yaml php 扩展?
- ruby-on-rails - 如何从默认的“rails new app”和“npx create-react-app”修复这些依赖问题?
- cqrs - CQRS and Event Sourcing - Read your own events
- php - 如何检查给定的 ID 是否用于产品变体?伍科默斯
- elasticsearch - 如何在弹性搜索中使用脚本进行过滤
- typescript - 使用 Botframework v4 中的瀑布对话框从自适应卡获取用户输入
- google-apps-script - 有没有办法更新此脚本,使其仅在编辑特定列中的单元格而不是任何单元格时运行?
- git - 使用 GIT 为某些文件生成 Slack 通知
- angular - 在 Ionic 4 中,来自商店选择器的 observable 不会刷新 UI!为什么?