C语言中memcpy的最佳实践

Yan*_*ang 3 c memcpy tr24731

  1. 在GNU中是否与在Microsoft C运行时中弃用相同?

  2. 是否弃用,如果在GNU C中有这样的,在89/90或编译器之后由C的后续标准强制执行?

  3. 如果它是GNU C编译器,那么它何时提供如此安全的替代内存操作函数,就像在Microsoft C中memcpy_s弃用的memcpy那样?

  4. 如果它是89/90之后的C标准,那么它何时提供如此安全的替代内存操作功能,如同在Microsoft C中memcpy_s弃用的memcpy那样?

  5. 如果在GNU C运行时没有这样的弃用,是否有一个函数既不是那些内存操作(名称开头mem)也不是我所知道的那个bcopy,但我可以用来复制内存安全,因为它需要一个关于长度的参数目的地?

  6. 如果有/有,您能否尽可能多地列出?

cni*_*tar 6

该函数memcpy不被弃用.它是库中最安全,最有用的功能之一.该memcpy_s功能在C11中成为标准功能(可选,参见附录K中的" 界限检查界面 ").


oua*_*uah 6

memcpy_s自C11以来已添加,但是可选的扩展名.memcpy在C中没有被弃用,也不是一个过时的功能.

glibc截至目前不支持_s功能,并且没有计划(AFAIK)让glibc团队支持他们.

  • `memcpy`*总是*取一个参数来指定目的地的长度.关于这个,MS简直就是破解. (5认同)