Mac OS Catalina sbrk已被弃用

Mac OS Catalina sbrk已被弃用,c,macos,malloc,deprecated,sbrk,C,Macos,Malloc,Deprecated,Sbrk,我试图用C语言实现一个内存分配器。当我试图在MacOSCatalina上的终端上编译代码时,它说函数“sbrk”已被弃用。有人知道解决这个问题的方法吗?其他在线解决方案似乎有点过时。不推荐使用”意味着该例程仍然可用(目前),但建议您不要在新软件中使用它。如果您只是为了实验/学习目的而写作,那么您仍然可以编译。使用开关-Wno关闭警告消息。如果您正在编写要发布或长期使用的软件,请使用mmap“弃用”表示例程仍然可用(目前),但建议您不要在新软件中使用它。如果您只是为了实验/学习目的而写作,那么您仍

我试图用C语言实现一个内存分配器。当我试图在MacOSCatalina上的终端上编译代码时,它说函数“sbrk”已被弃用。有人知道解决这个问题的方法吗?其他在线解决方案似乎有点过时。

不推荐使用”意味着该例程仍然可用(目前),但建议您不要在新软件中使用它。如果您只是为了实验/学习目的而写作,那么您仍然可以编译。使用开关
-Wno
关闭警告消息。如果您正在编写要发布或长期使用的软件,请使用
mmap

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

在实践中,术语“弃用”(如相关单词“过时”)至少可以表示三种不同的含义:

  • 这项功能预计将在{software,standard}的未来版本中删除。使用它的代码可能会停止工作
  • 我们认为这个功能不好,我们认为你不应该使用它
  • 我们想到了一个更好的版本。我们认为你应该改用它
  • 很多时候,这些意思是组合使用的。一个例子是C库函数
    gets()
    ,几乎所有人都认为它是不好的(因此意义#2适用),事实上到目前为止已经从C标准中删除了(因此意义#1也适用)

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

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

    在实践中,“弃用”一词(如相关单词“过时”)至少可以表示三种不同的含义:

  • 该功能预计将在{software,standard}的未来版本中删除。使用该功能的代码可能会停止工作
  • 我们认为这个功能不好,我们认为你不应该使用它
  • 我们想到了一个更好的版本。我们认为你应该用它来代替
  • 很多时候,这些含义是组合使用的。一个例子是C库函数
    gets()
    ,几乎所有人都认为它是不好的(因此含义2适用),事实上现在已经从C标准中删除了(因此含义1也适用)

    据我所知,
    sbrk
    是意义的一个例子#3。它没有什么特别的错误,但是有更好更现代的方法做同样的事情——尽管是更新的方法也可能更复杂,这意味着如果你想让事情保持简单,就有动机用老方法来做。这类事情的其他例子有系统调用
    signal
    create

    冒着编辑的风险(好吧,我承认,我正在编辑)如果你相信向后兼容性和长期稳定性,如果你相信程序员应该能够编写出用意良好的代码并让它永远运行,你不会仅仅因为意义3适用就向他们扔意义1。但是如果你想强迫peop如果你已经放弃了软件的稳定性(因为所有的东西都在不断地被重写,以跟上新的特性、新的bug和新的标准的变化),你可以像你一样思考,如果您认为向后兼容性是向后的,而且工作量太大,那么您可以一直使用“意义1”,即使这会让我感到很尴尬。:-(

    brk()和sbrk()都不推荐使用。检查。您应该同时使用brk()和sbrk()都不推荐使用。检查。您应该使用