我试图在C中实现我自己的内存分配器。当我试图在Mac上的终端中编译我的代码时,它说"sbrk“函数被废弃了。有人知道解决这个问题的办法吗?其他在线解决方案似乎有点过时。
发布于 2020-12-31 19:07:55
实际上,“废弃”一词(如相关的“过时”一词)至少可以指三种不同的事物:
很多时候,这些意思都是结合使用的。一个例子是C库函数gets(),几乎每个人都同意它是不好的(所以意思是#2应用),而且现在已经从C标准中删除了(所以意思#1也适用)。
据我所知,sbrk是#3的一个例子。它没有什么特别的问题,但是有更好和更现代的方法来做同样的事情--尽管更新的方法也可能更复杂,这意味着如果你想保持简单,就会有用旧的方式去做它的动机。这类事情的其他例子是系统调用signal和creat。
冒着发表社论的风险(好吧,我承认,我是在编辑),这意味着#3在语言或标准演变方面会变得有趣。如果您相信向后兼容性和长期稳定性,如果您认为程序员应该能够编写善意的代码并让它永远运行,那么您不会仅仅因为意义#3的应用就向他们抛出意义#1。但是,如果你想强迫人们像你一样思考,如果你放弃了软件稳定性(因为一切都在不断地被重写以跟上新的特性、新的错误和新的标准),如果你认为向后兼容性是向后的,而且工作量太大,那么你可以一直使用第一种含义,即使它把我逼上了一棵树。:-(
发布于 2020-12-31 19:04:04
“弃用”表示该例程仍然可用(目前),但建议您不要在新软件中使用它。如果你只是为了实验/学习的目的写作,你无论如何都可以编译。使用开关-Wno-deprecreated-declarations关闭警告消息。如果您正在编写要发布或长期使用的软件,请使用mmap。
https://stackoverflow.com/questions/65524290
复制相似问题