En supposant pointeur partagé peut être créé comme suitC++ bibliothèque Boost - passer le pointeur à une fonction partagée
typedef boost::shared_ptr<Employee_t> srdpointer;
srdpointer ptr((Employee_t*)malloc(sizeof(Employee_t)),std::ptr_fun(free));
Je dois passer le pointeur partagé qui allouer de la mémoire pointée par le PTR. Quelque chose comme ça.
void allocateBlocks(int **ptr, int *cnt)
{
*ptr = (int*)malloc(sizeof(int) * 10);
*cnt = 10;
/*do something*/
}
int main()
{
int *p = NULL;
int count = 0;
locateBlocks(&p, &count);
/*do something*/
free(p);
}
Comment puis-je obtenir la fonctionnalité similaire en utilisant shared_ptr
comme indiqué dans le code ci-dessus.
puis-je vous demander pourquoi vous utilisez 'malloc' et non' new'? – Default
Aime, comme std :: vector répondra à vos besoins. –
Greg
Etes-vous conscient que l'instance 'reset()' ing 'shared_ptr' avec un nouveau pointeur ne modifie pas les autres instances' shared_ptr' (elles pointeront vers l'ancien objet)? – Greg