j'ai deux rangées de caractères, répartis comme suit:copier plus petit tableau en tableau plus grand
unsigned char *arr1 = (unsigned char *)malloc((1024*1024) * sizeof(char));
unsigned char *arr2 = (unsigned char *)malloc((768*768) * sizeof(char));
Je souhaite copier arr2 en arr1, mais conserver la structure de ligne/colonne. Cela signifie que seuls les 768 premiers octets de chacune des 768 premières lignes seront modifiés dans arr1.
J'ai écrit une boucle for pour cela, mais ce n'est pas assez rapide pour mes besoins.
for (int x = 0; x < 768; x++) //copy each row
{
memcpy(arr1+(1024*x),arr2+(768*x), nc);
}
Existe-t-il une meilleure solution?
'sizeof (char)' est, par définition, 1. Si vous voulez le sizeof là, utilisez 'sizeof * arr1'. – pmg
Euh? sizeof * arr1 retournera juste 1. – zvrba
@zvrba: à droite, mais au moins cela aura un sens et sera toujours valide si vous avez changé les types. Écrire 'sizeof (char)' ne vous protège pas contre les bogues si vous changez le type, et c'est 100% inutile dans tous les cas parce que 'sizeof (char) == 1' fait partie de la ** définition ** du' sizeof 'opérateur. –