У меня есть shared_ptr
, указывающий на буфер динамически распределенной памяти char
s. Позвольте мне называть это shared_ptr
OwnerSharedPointer
.Смешивание shared_ptr и нормального ptr
Теперь, если я заявляю:
char * borrowerPtr;
и сделать это:
borrowerPtr = OwnerSharedPointer.get();
и передать borrowerPtr
к некоторой функции, которая в конечном итоге использует данные, хранящиеся в выделенной памяти. Что-то не так с этим?
Не так давно, как вы * знаете, 'shared_ptr' перейдет в исходный ptr. Иногда вам нужно это сделать, скажем, чтобы вызвать унаследованную функцию C. – BoBTFish
Как вы создали «std :: shared_ptr», указывающий на буфер динамически распределенной памяти «char's»? Такого не существует. Только 'std :: unique_ptr' частично специализирован для массивов. – 5gon12eder
@ 5gon12eder Это своего рода не имеет значения. Но да, я имел в виду, что каждая единица памяти имеет тот же размер, что и у персонажа. – TheBlueNotebook