C++ тилинде malloc керекпи?
C++ тилинде malloc керекпи?

Video: C++ тилинде malloc керекпи?

Video: C++ тилинде malloc керекпи?
Video: КазУТБ-ИКиСГД-Қазақ тілі-Сәулет-4-каз 2024, Ноябрь
Anonim

сен колдонуу malloc качан сага керек объекттерди белуштурууге керек учурдагы блоктун аткарылышынын мөөнөтүнөн кийин дагы бар (кайтаруу боюнча көчүрмө болмок ошондой эле кымбат болот), же эгерде эстутумду бөлүштүрүү керек ошол стектин өлчөмүнөн чоңураак (б.а.: 3mb локалдык стек массиви жаман идея).

Ошондой эле, C++ тилинде malloc керекпи?

Айырмасы жөнөкөй: malloc эстутумду бөлүштүрөт, ал эми new эстутумду бөлөт ЖАНА объекттин конструкторун чакырат сен үчүн эстутум бөлүп жатышат. Демек, эгерде сен C менен чектелген, жасашың керек эч качан колдонбо malloc , айрыкча менен мамиле кылганда C++ объектилер.

Ошондой эле сурашы мүмкүн, маллоктун эмне кереги бар? С тилинде китепкана функциясы malloc үймөктө эстутум блогун бөлүштүрүү үчүн колдонулат. Программа бул эстутум блогуна көрсөткүч аркылуу жетет malloc кайтып келет. Эстутум керек болбой калганда, көрсөткүч бошко берилет, ал эстутумду башка максаттарда колдонуу үчүн бөлүштүрөт.

Ушундайча, C++ тилинде malloc барбы?

malloc () функциясында C++ бөлүп берет а инициализацияланбаган эс тутум блогу жана кайтаруу а жараксыз көрсөткүч the биринчи байт the бөлүнгөн эс блок, эгерде the бөлүштүрүү ийгиликтүү болот. Эгерде the өлчөмү нөл, the кайтарылган маани көз каранды the ишке ашыруу the китепкана. It болушу мүмкүн же болбошу мүмкүн а нөл көрсөткүч.

Сиз структураны кантип тууралайсыз?

Сиз каалаган нерсе үчүн сизге эки керек malloc () с. структура вектор *y = malloc (sizeof *y); /* Көрсөткүчкө көңүл буруңуз */ y->x = calloc(10, sizeof *y->x); Биринчи сапта сиз Вектор объекти үчүн эстутумду бөлөсүз. malloc () бөлүнгөн эстутумга көрсөткүчтү кайтарат, ошондуктан y Вектор көрсөткүчү болушу керек.