class Obj { ... };
class pObj{
...
private:
Obj *p;
};
Стандартты
new
операциясының көмегімен
pObj
типті объектіге жады
бөлу кезінде
pObj *p = new pObj;
байттардың нақты саны
sizeof(pObj)
шамасынан артық болады, өйткені
new
операциясы, əдетте, бөлінген аймақтың бас жағына оның өлшемін жаза-
ды (
delete
операциясы дұрыс жұмыс істеуі үшін).
Шағын объектілер үшін мұндай қосымша шығындардың көлемі айтарлықтай
үлкен болуы мүмкін. Жадыны үнемдеу үшін
pObj
класы үшін өзіндік
new
опе-
рациясын жазуға болады, ол жадының үлкен блогын бөліп, содан кейін онда
Obj
объектісіне нұсқауыштарды орналастырады. Бұл үшін
pObj
объектісіне
headOfFree
статикалық өрісі енгізіледі, бұл өрісте кезекті объектіні орнала-
стыру үшін блоктың алғашқы бос объектісіне нұсқауыш сақталады.
Қолданылмайтын ұяшықтар тізімге байланыстырылады. Байланыс өрісіне
жады жұмсамау үшін біріктірме (
union
) қолданылады, оның көмегімен бір
ғана ұяшық объектіге нұсқауышты орналастыру үшін де немесе келесі бос
ұяшықпен байланыс орнату үшін де қолданылады:
Достарыңызбен бөлісу: |