Хуваарилагдсан санах ой сул уу?

Агуулгын хүснэгт:

Хуваарилагдсан санах ой сул уу?
Хуваарилагдсан санах ой сул уу?
Anonim

Malloc болон calloc функцийг ашиглан хуваарилсан санах ойг дангаар нь салгахгүй. Иймд үнэгүй аргыг-г динамик санах ойн хуваарилалт хийх бүрд ашигладаг. Энэ нь санах ойг суллаж, дэмий хоосон санах ойг багасгахад тусалдаг.

Хуваарилагдсан санах ойг хэрхэн чөлөөлөх вэ?

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

Хэрэв та хуваарилсан санах ойг чөлөөлөхгүй бол яах вэ?

Ихэнх тохиолдолд програмаас гарахын өмнөхөн санах ойн -г задлах нь утгагүй юм. Ямар ч байсан OS үүнийг буцааж авах болно. Үнэгүй нь үхсэн объектод хүрч, хуудаслах болно; үйлдлийн систем тэгэхгүй. Үр дагавар: Хуваарилалтыг тооцдог "алдааг илрүүлэгч"-ээс болгоомжтой байгаарай.

Санах ойг хуваарилах нь үнэтэй юу?

Том санах ойн блокуудыг хуваарилах, чөлөөлөх зардлыг энгийн хэмжүүрээр тооцвол энэ нь хуваарилах/ үнэгүй хос тус бүрд 7.5 мкс орчим үнэтэй гэсэн дүгнэлтэд хүрнэ. Гэхдээ их хэмжээний хуваарилалтад МБ тутамд гурван тусдаа зардал гардаг.

Хэрэв тийм бол хуваарилсан санах ойн зайг дахин хуваарилж болох уу?

Realloc функц нь дараах дүрмийн дагуу old_blk-ийн заасан санах ойн блокийг хуваарилж, дахин хуваарилж эсвэл чөлөөлдөг: Хэрэв old_blk нь NULL бол байт хэмжээтэй санах ойн шинэ блок болно. байнахуваарилагдсан. Хэрэв хэмжээ нь тэг байвал old_blk-ын заасан санах ойг гаргахын тулд чөлөөт функц дуудагдана.

Зөвлөмж болгож буй: