Я работаю в большом приложении, которое содержит c и cpp. Все файлы сохраняются как расширение cpp, но код написан в стиле c. Я имею в виду, что это определить структуру, а не распределять память класса через malloc и realloc и calloc. В последнее время они установили библиотеку boost. Поэтому я планирую использовать в своей существующей кодовой базе. Поэтому у меня есть следующий вопрос.
- Можно ли использовать std:: shared_ptr с malloc и бесплатно.
- Если да, может ли кто-нибудь указать мне базовую базу кода?
- Будет ли это влиять на любую функциональность, если я создам std:: shared_ptr в своем приложении и передаю этот указатель на другую функцию, которая использует malloc или calloc?
Или другими словами:
Как достичь аналогичной функциональности с помощью std:: shared_ptr для следующего кода:
void allocateBlocks(int **ptr, int *cnt)
{
*ptr = (int*)malloc(sizeof(int) * 10);
*cnt = 10;
/*do something*/
}
int main()
{
int *p = NULL;
int count = 0;
allocateBlocks(&p, &count);
/*do something*/
free(p);
}
Мы вызываем некоторые функции, которые принимают двойной указатель и заполняют структуру внутри своего приложения и используют malloc. Можем ли мы назначить этот указатель на std:: shared_ptr? Например:
typedef struct txn_s
{
int s;
int d;
int *e;
} txn_t;
typedef boost::shared_ptr<txn_t> tpointer;
tpointer((txn_t*)::malloc(sizeof(txn_t),::free));