(Re-)bonjour !
J'ai essayé de faire un memcpy (plus rapide) que le standard, seulement, il arrive qu'il ne se comporte pas correctement...
Il est censé, lorsque les adresses sont alignées sur 32-bits, copier 32 bits d'un coup.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
__inline
void * mymemcpy(void * dst, void const * src, size_t len)
{
    int	*lpDst = (int *)dst;
	int IntDst = reinterpret_cast<int>(dst);
	int const *lpSrc = (int const *)src;
	uintptr_t IntSrc = reinterpret_cast<uintptr_t>(src);
 
	if (!(IntSrc & 0xFFFFFFFC) && !(IntDst & 0xFFFFFFFC))
	{
		while (len >=4)
		{
			*lpDst++ = *lpSrc++;
			len -= 4;
		}
	}
 
	char *pcDst = (char *)lpDst;
	char const *pcSrc = (char const *)lpSrc;
 
	while (len--)
	{
		*pcDst++ = *pcSrc++;
	}
 
	return (dst);
}
Je ne comprends pas ce qu'il se passe, j'ai l'impression que, parfois, il ne copie que des 0.