2016-01-07 2 views
0

Я пытаюсь передать общий указатель в Obj-C через void *, чтобы он мог сохранить определенный объект, а затем удалить его (через функцию C++) ,Пропустить общий указатель из C++/Поместить общий указатель на кучу

Это работает?

У меня прекрасная идея, но это похоже на самый быстрый способ получить ссылку на общий указатель. Просто хочу удостовериться, что моя математика не выключена на malloc (поскольку я не часто ее использую).

std::shared_ptr<AAA> shared_ptr = getSharedPointer(); 
std::shared_ptr<AAA>* ptr = malloc(sizeof(std::shared_ptr<AAA>)); 
*ptr = shared_ptr; 
return ptr; 
+2

malloc с общим ptr? Никогда не делай этого. – drescherjm

+0

Как Obj-C удалить указанный указатель? Используй это? – Yakk

+1

Я не понимаю, что вы пытаетесь сделать, но это не кажется правильным. – 5gon12eder

ответ

0

Найдено с помощью поиска таНос и C++ (Using malloc instead of new, and calling the copy constructor when the object is created)

Назначение работает правильно, так как в коде в ОП, но затем необходимо вызывать деструктор вручную и бесплатно() вместо удаления ,

Я проверил с простым модульным тестом, что это работает, и подсчет ссылок указателя правильно увеличивается и уменьшается.

Смежные вопросы