Untuk mendapatkan void *
dari fungsi di CI akan melakukan sesuatu seperti ini (contoh sangat mendasar):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Bagaimana cara mencapai hasil yang sama saat menggunakan std::unique_ptr<>
?
stackoverflow.com/questions/4316727/…
—
dragosht
Tolong jelaskan masalah apa yang Anda alami dengan melakukannya.
—
molbdnilo
Lihat jawaban ini untuk void unique_ptr umum: stackoverflow.com/a/39288979/2527795
—
vll
Harap dicatat bahwa seharusnya hampir tidak pernah ada alasan untuk menggunakan
—
kenari
malloc
C ++ seperti ini. Anda mengembalikan pointer ke memori mentah, yang Anda butuhkan untuk menempatkan objek-objek baru sebelum Anda diizinkan menggunakannya. Jika Anda tidak memiliki alasan yang baik untuk membuat objek di lain waktu daripada saat Anda mengalokasikan memori, maka Anda harus menggunakan new
atau std::make_unique
yang akan mengalokasikan memori, serta membuat objek yang sesuai. Dalam kedua kasus std::vector
dengan reserve
prob. lebih baik juga. Bahkan jika Anda tidak menggunakan ini, operator new
adalah cara idiomatis mengalokasikan memori, bukan malloc
.