memset()和memcpy()使用D片



在D语言中,与下列语句等价的是什么假设代码如下:-

int size = 8;
int shift = 1; 
int[size] skip;
int[size]  suff;
memcpy(&skip[0], &skip[0]+shift, (m-shift)*(int.sizeof));
memset(&skip[0]+(m-shift),0, shift*(int.sizeof))

我认为转换将是:-

skip[0 .. size-1] = skip[shift .. size-1   ];  //For the memcpy();
skip[0 .. size-1] = 0;                         //For the  memset();

但这似乎不适合我作为dmd(v2.066.1)给出错误slice [8..7] exceeds array bounds [0..8]

我假设m代表您的memcpy/memset代码中数组的长度。

skip[0 .. size - shift] = skip[shift .. size]; // may throw
skip[size - shift .. size] = 0;

请注意,如果数组边界重叠,将在第一行得到运行时错误。

相关内容

  • 没有找到相关文章

最新更新