我试图将C ++转换为C#,并且试图从概念上理解以下代码的作用:

memcpy( pQuotes + iStart, pCurQuotes + iSrc, iNumQuotes * sizeof( Quotation ) );


pQuotes声明为:struct Quotation * pQuotes。
pCurQuotes是结构Quoataion的CArray,iSrc是它的第一个索引。 iNumQuotes是pCurQuotes中元素的数量。

我想知道的是,如果iStart是pQuotes的最后一个索引,是否会增加pQuotes的大小以容纳pCurQuotes中的元素数量?换句话说,此函数是先调整数组大小然后追加到数组吗?

谢谢。

塞思莫

最佳答案

如果iStart是pQuotes的最后一个索引,则pQuotes的大小是否为
  增加以容纳pCurQuotes中的元素数量?在
  换句话说,此函数是否先调整数组大小然后追加到数组?


没有。

这是这些低级存储功能的基本限制。作为开发人员,您有责任确保所有缓冲区都足够大,以免您在缓冲区外读写。

从概念上讲,这里发生的是程序将只将原始字节从源缓冲区复制到目标缓冲区。它不执行任何边界检查或类型检查。对于将其转换为C#的问题,第二点特别重要,因为在复制过程中没有调用类型转换。

关于c++ - C++ memcpy到数组结尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49107318/

10-11 00:56