Je souhaite utiliser la mémoire tampon circulaire Boost pour stocker les tableaux produits par une API matérielle. L'API prend l'adresse de l'emplacement de mémoire et pousse le tableau en conséquence. J'ai donc les suivantes:Accélération de l'accès au pointeur de la mémoire tampon circulaire (C++)
typedef unsigned char API_data [10];
boost::circular_buffer<API_data> data(10);
boost::circular_buffer<API_data>::iterator it = data.begin();
Mais je ne peux pas passer le pointeur it
à l'API parce que:
aucune fonction de conversion appropriée de «
boost::cb_details::iterator<boost::circular_buffer<API_data, std::allocator<API_data>>, boost::cb_details::nonconst_traits<boost::container::allocator_traits<std::allocator<API_data>>>>
» àLPVOID
existe.
L'API attend un pointeur de type LPVOID
mais pointeur it
est de type différent.
'est il s' aucune sorte d'un pointeur. –
Vous pouvez probablement obtenir le début de la mémoire tampon avec '& * it'. Cependant, même si cela se compilera probablement, je ne m'attends pas à ce qu'il fonctionne parce qu'un tampon circulaire n'est pas seulement un tampon, il a aussi un index de début et de fin. Et ces index qui boostent pour vous doivent également être mis à jour correctement par le matériel pour atteindre ce que vous voulez. – Eelke
Merci les gars pour vos contributions! J'ai supposé que 'it' est un pointeur car l'exemple de la documentation du buffer circulaire boost déréférencie' it' pour obtenir la valeur stockée à l'emplacement. Je ne suis pas suffisamment expérimenté pour trouver la documentation tampon circulaire boost autre chose que de la confusion. – HypeInst