J'ai une fonction qui copie un tableau de nombres entiers dans un vecteur qui fonctionne bien avec l'appel std :: copy mais quand j'ai changé std :: copy en std :: memcpy cela ne fonctionne pas correctement. Quelqu'un peut-il indiquer ce que je fais mal?Conversion std :: copy en std :: memcpy ne fonctionne pas?
void Walle_SSD1306::RadarD(uint8_t *RadarLL, uint8_t isFirstRadarLogo)
{
//Following two copy statement is working correctly
std::copy(
RadarLL+128
, RadarLL + 8192
, buffer.begin()+128
);
std::copy(
RadarLL+38
, RadarLL + 90
, buffer.begin()+38
);
//But when I change copy to memcpy following code is not working correctly
std::memcpy(
(buffer.begin()+128) , (RadarLL+128), (8192 - 128)*sizeof(uint8_t)
);
std::memcpy(
(buffer.begin()+38), (RadarLL+38), (52*sizeof(uint8_t))
);
//where buffer is...
std::vector<uint8_t> buffer;
Une telle expression buffer.begin() + 128 utilisé dans le memcpy est invalide. Vous devriez utiliser au moins & bffer [128] ou buffer.data() + 128 –
Quand vous dites "ne fonctionne pas" nous n'avons aucune idée de ce que cela signifie. Est-ce qu'il compile même? –
Le code est compilé mais le tampon n'obtient pas la valeur correcte de RadarLL. Pouvez-vous signaler toute erreur que je fais? – user5572904