首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不推荐Mac sbrk

不推荐Mac sbrk
EN

Stack Overflow用户
提问于 2020-12-31 18:08:10
回答 2查看 873关注 0票数 0

我试图在C中实现我自己的内存分配器。当我试图在Mac上的终端中编译我的代码时,它说"sbrk“函数被废弃了。有人知道解决这个问题的办法吗?其他在线解决方案似乎有点过时。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-31 19:07:55

实际上,“废弃”一词(如相关的“过时”一词)至少可以指三种不同的事物:

  1. 这个特性预计将在以后发布的{软件、标准}中删除。使用它的代码可能会停止工作。
  2. 我们认为这个特性很糟糕,我们认为您不应该使用它。
  3. 我们认为这个特性的版本要好得多。我们认为你应该用它代替。

很多时候,这些意思都是结合使用的。一个例子是C库函数gets(),几乎每个人都同意它是不好的(所以意思是#2应用),而且现在已经从C标准中删除了(所以意思#1也适用)。

据我所知,sbrk是#3的一个例子。它没有什么特别的问题,但是有更好和更现代的方法来做同样的事情--尽管更新的方法也可能更复杂,这意味着如果你想保持简单,就会有用旧的方式去做它的动机。这类事情的其他例子是系统调用signalcreat

冒着发表社论的风险(好吧,我承认,我是在编辑),这意味着#3在语言或标准演变方面会变得有趣。如果您相信向后兼容性和长期稳定性,如果您认为程序员应该能够编写善意的代码并让它永远运行,那么您不会仅仅因为意义#3的应用就向他们抛出意义#1。但是,如果你想强迫人们像你一样思考,如果你放弃了软件稳定性(因为一切都在不断地被重写以跟上新的特性、新的错误和新的标准),如果你认为向后兼容性是向后的,而且工作量太大,那么你可以一直使用第一种含义,即使它把我逼上了一棵树。:-(

票数 1
EN

Stack Overflow用户

发布于 2020-12-31 19:04:04

“弃用”表示该例程仍然可用(目前),但建议您不要在新软件中使用它。如果你只是为了实验/学习的目的写作,你无论如何都可以编译。使用开关-Wno-deprecreated-declarations关闭警告消息。如果您正在编写要发布或长期使用的软件,请使用mmap

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65524290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档