在一个互联网论坛上,我看到一个用户在谈论realloc
和 POSIX。他引用规范说:
该
realloc()
函数应解除分配所指向的旧对象,ptr
并返回一个指向具有由 size 指定的大小的新对象的指针。
所述用户随后指出,该规范使用“ shall ”一词而不是“ must ”。他详细说明,由于这个原因,realloc
不同平台的实现可能会有所不同,然后建议避免使用以避免realloc
内存泄漏。
我不是英语母语,所以我可能错了,但我对“应该”的理解与上面所说的不同。就我(可能有缺陷的)理解而言,“应该”描述了一个命令;它介于“应该”和“将”之间——所以它是如此强烈,以至于它几乎拒绝承认可能会发生相反的事情。每个人都知道这些行:
我是主你的神。在我之前,你不得有其他神。你不可为你雕刻任何雕像。不可妄称耶和华你神的名。记住安息日,保持它为圣日。孝敬你的父亲和你的母亲。不可杀人。不可奸淫。你不可偷窃。你不可作假见证陷害你的邻居。你不可贪图。
我理解这些是绝对的命令,不允许不服从;并且以同样的方式,我在 POSIX 规范和任何其他类似文本中解释了“应该”这个词。
我的理解正确吗?或者不是?
特别是 - “应该”这个词是否允许“ realloc ”实现不释放旧对象?