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
mallocC ++ 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 newatau std::make_uniqueyang akan mengalokasikan memori, serta membuat objek yang sesuai. Dalam kedua kasus std::vectordengan reserveprob. lebih baik juga. Bahkan jika Anda tidak menggunakan ini, operator newadalah cara idiomatis mengalokasikan memori, bukan malloc.