Та C++ хэл дээр malloc хийх хэрэгтэй юу?
Та C++ хэл дээр malloc хийх хэрэгтэй юу?

Видео: Та C++ хэл дээр malloc хийх хэрэгтэй юу?

Видео: Та C++ хэл дээр malloc хийх хэрэгтэй юу?
Видео: 15 Лекц: Нэгтгэх-Олох бүтэц буюу Union-find (ICSI202-Өгөгдлийн бүтэц, МУИС-ХШУИС, 2020 оны хавар) 2024, Есдүгээр
Anonim

Та ашиглах malloc хэзээ чамд хэрэгтэй гэсэн объектуудыг хуваарилах ёстой Одоогийн блокийн ашиглалтын хугацаанаас хойш оршин тогтнох (үүнд хуулбарыг буцаах болно үнэтэй байх), эсвэл хэрэв та санах ойг хуваарилах хэрэгтэй тухайн стекийн хэмжээнээс их (жишээ нь: 3mb локал стек массив нь муу санаа юм).

Мөн C++ хэл дээр malloc хийх шаардлагатай юу?

Ялгаа нь энгийн: malloc санах ойг хуваарилдаг бол new нь санах ойг хуваарилж, объектын үүсгэгчийг дууддаг Та -д зориулж санах ойг хуваарилж байна. Тиймээс, хэрэв үгүй бол Та 'C-ээр хязгаарлагдсан, чи тэгэх ёстой хэзээ ч хэрэглэхгүй malloc , ялангуяа харьцах үед C++ объектууд.

Хүн бас асууж магадгүй, malloc ямар учиртай юм бэ? Си хэл дээр номын сангийн функц malloc нь нуруулдан дээр санах ойн блок хуваарилахад хэрэглэгддэг. Програм нь энэ санах ойн блок руу заагчаар ханддаг malloc буцаж ирдэг. Санах ой хэрэггүй болсон үед заагчийг чөлөөтэй болгож, санах ойг өөр зориулалтаар ашиглах боломжтой болгодог.

Ийм байдлаар C++ хэл дээр malloc байна уу?

Маллок () функц нь C++ хуваарилдаг а эхлүүлээгүй санах ойн блок ба өгөөж а заагчийг хүчингүй болгох нь эхний байт нь хуваарилагдсан санах ойн блок хэрэв нь хуваарилалт амжилттай болсон. Хэрэв нь хэмжээ нь тэг, нь буцаах утга нь хамаарна нь хэрэгжилт нь номын сан. Энэ байж болно, үгүй ч байж болно а хоосон заагч.

Та бүтцийг хэрхэн зөв хуваарилах вэ?

Хүссэн зүйлдээ хоёр хэрэгтэй malloc () с. бүтэц Вектор *y = malloc (хэмжээ *y); /* Заагчийг анхаарна уу */ y->x = calloc(10, sizeof *y->x); Эхний мөрөнд та Vector объектын санах ойг хуваарилдаг. malloc () нь хуваарилагдсан санах ой руу заагч буцаадаг тул y нь Вектор заагч байх ёстой.