ในการรับvoid *
ฟังก์ชั่นใน CI จะทำสิ่งนี้ (ตัวอย่างพื้นฐานมาก):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
ฉันจะได้ผลลัพธ์เดียวกันเมื่อใช้งานได้std::unique_ptr<>
อย่างไร
stackoverflow.com/questions/4316727/…
—
dragosht
โปรดอธิบายว่าคุณกำลังทำอะไรอยู่
—
molbdnilo
ดูคำตอบนี้สำหรับโมฆะทั่วไป unique_ptr: stackoverflow.com/a/39288979/2527795
—
vll
โปรดทราบว่าไม่ควรมีเหตุผลที่จะใช้
—
วอลนัท
malloc
ใน C ++ เช่นนี้ คุณกำลังส่งคืนพอยน์เตอร์ไปยังหน่วยความจำแบบดิบโดยคุณต้องวางออบเจกต์ใหม่ลงในก่อนที่คุณจะได้รับอนุญาตให้ใช้งาน หากคุณไม่มีเหตุผลที่ดีในการสร้างวัตถุในภายหลังมากกว่าเมื่อคุณจัดสรรหน่วยความจำคุณควรใช้new
หรือstd::make_unique
จะจัดสรรหน่วยความจำรวมถึงสร้างวัตถุที่เหมาะสม ในทั้งสองกรณีที่std::vector
มีreserve
ปัญหา ดีขึ้นด้วย แม้ว่าคุณจะไม่ได้ใช้เหล่านี้เป็นวิธีที่สำนวนการจัดสรรหน่วยความจำไม่ได้operator new
malloc