Graeme Geldenhuys schrieb: > 2009/9/29 Florian Klaempfl <flor...@freepascal.org>: >> Indeed, the serious answer is: >> move handles overlapping memory blocks correctly (so the data might not >> existing anymore at the old location), memcpy doesn't do this and screws >> things up when handling overlapping blocks. This is why e.g. C++ has >> memmove as well which is more expensive than memcpy due to overlap checks. > > I thought simple pointer arithmetic would solve the issue of memcpy()? > > > Anyway, so based on your answer, if we apply the following code (shown > belowe) to FPC, we have the best of both worlds! :-) MemCopy() does > exactly what Move() does - but without the name confusion. :-)
It does not. MemCopy is simpler and because of the missing overlapping checks, it as faster and it can be often inlined. > > Could this "alias" procedure be applied somewhere in FPC? This was > done before - the case of AssignFile() vs Assign() > > procedure MemCopy(src, dest: pointer; size: SizeInt); > begin > Move(src^, dest^, size); > end; > > > > Regards, > - Graeme - > > > _______________________________________________ > fpGUI - a cross-platform Free Pascal GUI toolkit > http://opensoft.homeip.net/fpgui/ > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal