Hello,
I'm trying to use C's memmove as a tool to delete or insert a slice from/into
an array. But I cannot manage to do it: systematic segmentation fault.
What is wrong below?
import std.c.string : memmove;
// void *memmove(void *dest, const void *src, size_t n);
void moveEnd (E) (E[] elements, size_t start, int offset) {
// Length must be known before possible extension.
auto length = elements.length;
// If move up, extend array to make place.
if (offset > 0)
elements.length += offset;
// Move slice.
auto dest = cast(void*)(&(elements[start + offset]));
auto source = cast(void*)(&(elements[start]));
size_t size = length - start;
memmove(dest, source, size); // segfault ***
// If move down, compress array.
if (offset < 0)
elements.length += offset;
}
unittest {
string s = "012--3456789";
// Remove slice.
s.moveEnd(5, -2);
writeln(s);
}
Denis
--
_________________
vita es estrany
spir.wikidot.com