malloc

Autres langues

Langue: ru

Autres versions - même langue

Version: áÐÒÅÌØ 4, 1993 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

îáú÷áîéå

calloc, malloc, free, realloc - ÷ÙÄÅÌÅÎÉÅ É ÏÓ×ÏÂÏÖÄÅÎÉÅ ÄÉÎÁÍÉÞÅÓËÏÊ ÐÁÍÑÔÉ

óéîôáëóéó


#include <stdlib.h>



void *calloc(size_t nmemb, size_t size);

void *malloc(size_t size);

void free(void *ptr);

void *realloc(void *ptr, size_t size);

ïðéóáîéå

calloc() ×ÙÄÅÌÑÅÔ ÐÁÍÑÔØ ÄÌÑ ÍÁÓÓÉ×Á ÉÚ nmemb ÜÌÅÍÅÎÔÏ× ÐÏ size ÂÁÊÔ ËÁÖÄÙÊ, É ×ÏÚ×ÒÁÝÁÅÔ ÕËÁÚÁÔÅÌØ ÎÁ ×ÙÄÅÌÅÎÎÕÀ ÐÁÍÑÔØ. ÷ÙÄÅÌÅÎÎÁÑ ÐÁÍÑÔØ ÏÂÎÕÌÑÅÔÓÑ.

malloc() ×ÙÄÅÌÑÅÔ size ÂÁÊÔ É ×ÏÚ×ÒÁÝÁÅÔ ÕËÁÚÁÔÅÌØ ÎÁ ×ÙÄÅÌÅÎÎÕÀ ÐÁÍÑÔØ. ÷ÙÄÅÌÅÎÎÁÑ ÐÁÍÑÔØ ÎÅ ÉÎÉÃÉÁÌÉÚÉÒÕÅÔÓÑ.

free() ÏÓ×ÏÂÏÖÄÁÅÔ ÏÂÌÁÓÔØ ÐÁÍÑÔÉ, ÎÁ ËÏÔÏÒÕÀ ÕËÁÚÙ×ÁÅÔ ptr, ËÏÔÏÒÁÑ ÂÙÔØ ×ÙÄÅÌÅÎÁ ÒÁÎÅÅ ÐÏÓÒÅÄÓÔ×ÏÍ malloc(), calloc() ÉÌÉ realloc(). éÎÁÞÅ, ÅÓÌÉ free(ptr) ÂÙÌ ÕÖÅ ×ÙÚ×ÁÎ ÒÁÎÅÅ, ÒÅÚÕÌØÔÁÔ ÏÐÅÒÁÃÉÉ ÎÅ ÏÐÒÅÄÅÌÅÎ. åÓÌÉ ptr ÒÁ×ÅÎ NULL, ÔÏ ÎÉÞÅÇÏ ÎÅ ÐÒÏÉÓÈÏÄÉÔ.

realloc() ÉÚÍÅÎÑÅÔ ÒÁÚÍÅÒ ÂÌÏËÁ ÄÉÎÁÍÉÞÅÓËÏÊ ÐÁÍÑÔÉ, ÎÁ ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ ptr. îÏ×ÙÊ ÒÁÚÍÅÒ ÂÌÏËÁ ÂÕÄÅÔ ÒÁ×ÅÎ size ÂÁÊÔ. åÇÏ ÓÏÄÅÒÖÉÍÏÅ ÏÓÔÁÎÅÔÓÑ ÎÅÉÚÍÅÎÎÙÍ × ÐÒÏÍÅÖÕÔËÅ ×ÐÌÏÔØ ÄÏ ÐÒÅÖÎÅÇÏ ÉÌÉ ÎÏ×ÏÇÏ ÒÁÚÍÅÒÁ, ÓÍÏÔÒÑ ÞÔÏ ÍÅÎØÛÅ; ÄÏÂÁ×ÌÅÎÎÁÑ ÐÁÍÑÔØ ÎÅ ÉÎÉÃÉÁÌÉÚÉÒÕÅÔÓÑ. åÓÌÉ ptr ÒÁ×ÅÎ NULL, ÔÏ ÒÅÚÕÌØÔÁÔ ×ÙÚÏ×Á ÜË×É×ÁÌÅÎÔÅÎ malloc(size); ÅÓÌÉ size ÒÁ×ÅÎ ÎÕÌÀ, ÔÏ ÒÅÚÕÌØÔÁÔ ×ÙÚÏ×Á ÜË×É×ÁÌÅÎÔÅÎ free(ptr). ëÒÏÍÅ ÓÌÕÞÁÑ, ËÏÇÄÁ ptr ÒÁ×ÅÎ NULL, ÏÎ ÄÏÌÖÅÎ ÕËÁÚÙ×ÁÔØ ÎÁ ÐÁÍÑÔØ, ×ÙÄÅÌÅÎÎÕÀ ÒÁÎÅÅ ÐÏÓÒÅÄÓÔ×ÏÍ malloc(), calloc() ÉÌÉ realloc().

÷ïú÷òáýáåíïå úîáþåîéå

calloc() É malloc() ×ÏÚ×ÒÁÝÁÀÔ ÕËÁÚÁÔÅÌÉ ÎÁ ×ÙÄÅÌÅÎÎÕÀ ÐÁÍÑÔØ, ×ÙÒÏ×ÎÅÎÎÕÀ ÔÁË, ÞÔÏ ÉÈ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÅÒÅÍÅÎÎÙÈ ÌÀÂÏÇÏ ÔÉÐÁ. ðÒÉ ÎÅÕÄÁÞÅ ×ÙÄÅÌÅÎÉÑ ×ÏÚ×ÒÁÝÁÅÔÓÑ NULL.

free ÎÉÞÅÇÏ ÎÅ ×ÏÚ×ÒÁÝÁÅÔ.

realloc() ×ÏÚ×ÒÁÝÁÅÔ ÕËÁÚÁÔÅÌØ ÎÁ ÎÏ×ÙÊ ÕÞÁÓÔÏË ÐÁÍÑÔÉ, ×ÙÒÏ×ÎÅÎÎÙÊ ÔÁË, ÞÔÏ ÅÇÏ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÅÒÅÍÅÎÎÙÈ ÌÀÂÏÇÏ ÔÉÐÁ, ÐÒÉÞÅÍ ÜÔÏÔ ÎÏ×ÙÊ ÕËÁÚÁÔÅÌØ ÍÏÖÅÔ ÏÔÌÉÞÁÔØÓÑ ÏÔ ptr. åÓÌÉ ÚÁÐÒÏÓ ×ÙÐÏÌÎÉÔØ ÎÅ ÕÄÁÅÔÓÑ ÉÌÉ ÎÏ×ÙÊ ÒÁÚÍÅÒ ÒÁ×ÅÎ ÎÕÌÀ, ×ÏÚ×ÒÁÝÁÅÔÓÑ NULL. åÓÌÉ ×ÙÚÏ× realloc() ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÎÏ, ÔÏ ÓÔÁÒÙÊ ÂÌÏË ÐÁÍÑÔÉ ÏÓÔÁÅÔÓÑ ÎÅÔÒÏÎÕÔÙÍ: ÏÎ ÎÅ ÏÓ×ÏÂÏÖÄÁÅÔÓÑ É ÎÅ ÐÅÒÅÍÅÝÁÅÔÓÑ.

óïïô÷åôóô÷éå óôáîäáòôáí

ANSI-C

óíïôòé ôáëöå

brk(2)

úáíåþáîéñ

óÔÁÎÄÁÒÔ Unix98 ÔÒÅÂÕÅÔ, ÞÔÏÂÙ malloc(), calloc() É realloc() ÕÓÔÁÎÁ×ÌÉ×ÁÌÉ ÐÅÒÅÍÅÎÎÕÀ errno × ÚÎÁÞÅÎÉÅ ENOMEM × ÓÌÕÞÁÅ ÎÅÕÓÐÅÛÎÏÇÏ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ. Glibc ÐÏÌÁÇÁÅÔ, ÞÔÏ ÜÔÏ ÕÓÌÏ×ÉÅ ×ÙÐÏÌÎÑÅÔÓÑ (É ÄÌÑ glibc-×ÅÒÓÉÉ ÜÔÉÈ ÆÕÎËÃÉÊ ÜÔÏ ÔÁË); ÅÓÌÉ ÖÅ ×Ù ÉÓÐÏÌØÚÕÅÔÅ ÒÅÁÌÉÚÁÃÉÀ, ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÀÝÕÀ errno, ÔÏ ÎÅËÏÔÏÒÙÅ ÆÕÎËÃÉÉ ÂÉÂÌÉÏÔÅËÉ ÍÏÇÕÔ ÚÁ×ÅÒÛÁÔØÓÑ ÏÛÉÂÏÞÎÏ, ÎÅ ÚÎÁÑ ÐÒÉÞÉÎÙ ÎÅÕÄÁÞÉ.

óÂÏÉ ×ÎÕÔÒÉ malloc(), free() ÉÌÉ realloc() × ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ×ÙÚ×ÁÎÙ ÎÁÒÕÛÅÎÉÑÍÉ ÓÔÒÕËÔÕÒÙ ÈÉÐÁ, ÔÁËÉÍÉ ËÁË ÚÁÐÉÓØ ÚÁ ÇÒÁÎÉÃÙ ×ÙÄÅÌÅÎÎÏÇÏ ÕÞÁÓÔËÁ ÉÌÉ ÐÏ×ÔÏÒÎÏÅ ÏÓ×ÏÂÏÖÄÅÎÉÅ ÐÁÍÑÔÉ ÐÏ ÏÄÎÏÍÕ É ÔÏÍÕ ÖÅ ÕËÁÚÁÔÅÌÀ.

ðÏÓÌÅÄÎÉÅ ×ÅÒÓÉÉ Linux libc (ÎÏ×ÅÅ, ÞÅÍ 5.4.23) É GNU libc (2.x) ×ËÌÀÞÁÀÔ × ÓÅÂÑ ÒÅÁÌÉÚÁÃÉÀ ÆÕÎËÃÉÊ ÕÐÒÁ×ÌÅÎÉÑ ÐÁÍÑÔØÀ, ÎÁÓÔÒÁÉ×ÁÅÍÕÀ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÙÅ ÏËÒÕÖÅÎÉÑ. ëÏÇÄÁ ÕÓÔÁÎÏ×ÌÅÎÁ MALLOC_CHECK_, ÉÓÐÏÌØÚÕÅÔÓÑ ÓÐÅÃÉÁÌØÎÁÑ (É ÍÅÎÅÅ ÜÆÆÅËÔÉ×ÎÁÑ) ÒÅÁÌÉÚÁÃÉÑ, ËÏÔÏÒÁÑ ÒÁÚÒÁÂÏÔÁÎÁ Ó ÃÅÌØÀ ÂÙÔØ ÂÏÌÅÅ ÕÓÔÏÊÞÉ×ÏÊ Ë ÎÅÂÏÌØÛÉÍ ÏÛÉÂËÁÍ, ÔÁËÉÍ ËÁË Ä×ÏÊÎÏÊ ×ÙÚÏ× free() Ó ÏÄÉÎÁËÏ×ÙÍ ÁÒÇÕÍÅÎÔÏÍ, ÉÌÉ ÐÅÒÅÐÏÌÎÅÎÉÑÍÉ ÎÁ ÏÄÉÎ ÂÁÊÔ. üÔÏ, ÔÅÍ ÎÅ ÍÅÎÅÅ, ÏÂÅÓÐÅÞÉ×ÁÅÔ ÚÁÝÉÔÕ ÎÅ ÏÔ ×ÓÅÈ ÏÛÉÂÏË, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÐÒÉ×ÅÓÔÉ Ë ÕÔÅÞËÁÍ ÐÁÍÑÔÉ. åÓÌÉ MALLOC_CHECK_ ÕÓÔÁÎÏ×ÌÅÎÁ × 0, ×ÓÅ ÚÁÍÅÞÅÎÎÙÅ ÎÁÒÕÛÅÎÉÑ ÓÔÒÕËÔÕÒÙ ÈÉÐÁ ÉÇÎÏÒÉÒÕÀÔÓÑ; ÅÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÁ × 1, ÄÉÁÇÎÏÓÔÉËÁ ÐÅÞÁÔÁÅÔÓÑ ÎÁ stderr; ÅÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÁ × 2, ÔÏ ÎÅÍÅÄÌÅÎÎÏ ×ÙÚÙ×ÁÅÔÓÑ abort(). üÔÏ ÍÏÖÅÔ ÂÙÔØ ÐÏÌÅÚÎÙÍ, ÔÁË ËÁË ÉÎÁÞÅ ÒÅÁÌØÎÙÊ ÓÂÏÊ ÍÏÇ ÂÙ ÐÒÏÉÚÏÊÔÉ ÍÎÏÇÏ ÐÏÚÖÅ, É ÉÓÔÉÎÎÕÀ ÅÇÏ ÐÒÉÞÉÎÕ ÂÙÌÏ ÂÙ × ÜÔÏÍ ÓÌÕÞÁÅ ÏÞÅÎØ ÔÒÕÄÎÏ ÎÁÊÔÉ.

ðåòå÷ïä


ðÅÒÅ×ÏÄ Ó ÁÎÇÌÉÊÓËÏÇÏ (C) 2000 äÍÉÔÒÉÊ íÏÒÏÖÎÉËÏ×

    (dm@simplex.irkutsk.ru, 2:5070/141.3)