Dans de nombreux cas , l'utilisateur détermine à la volée si un programme va traiter un tableau de 10 éléments ou 10.000 . Parce que la taille du tableau n'est pas connu à l'avance , vous devez mettre de côté la mémoire et libérer pendant l'exécution du programme. Cette gestion de la mémoire lors de l'exécution est connue en informatique que l'allocation dynamique de la mémoire . Cet article se concentre sur les fonctions dédiées à l'allocation dynamique de la mémoire en C. Choses que vous devez
environnement de développement intégré en C + + Compiler
livre sur la programmation en C
Show More Instructions
1
inclure le fichier de la bibliothèque avec les définitions standard de la bibliothèque. Il s'agit du fichier " stdlib.h " et il comprend , entre autres caractéristiques importantes C , toutes les fonctions qui effectuent allocation dynamique de mémoire . Pour inclure ce fichier de bibliothèque dans votre programme , insérez la ligne suivante au début de votre source /fichier d'en-tête
Exemple: .
# Include Page 2
Décidez ce que vous voulez faire. Ensuite, choisissez la fonction des étapes suivantes qui correspond le mieux à l'action d'allocation de mémoire que vous souhaitez effectuer .
3
utilisation malloc () pour un bloc de mémoire de taille connue . " Malloc " alloue octets " de taille " et renvoie un pointeur vers le début du bloc Prototype
: void * malloc ( size_t size ) ;
Exemple: .
Int i;
caractères * buf ; printf (" Entrez longueur de la chaîne :");
scanf ( "% d" , & i ) ;
buf = (char *) malloc ( i +1);
if ( NULL == buf ) exit ( 1);
//etc 4
calloc Employ () pour un ensemble d'éléments où chaque élément a une taille de plus d'un octet . " Calloc " alloue un bloc de mémoire pour les éléments " num" chaque élément étant octets " de taille " de longueur. Elle renvoie un pointeur vers le début du bloc Prototype :
void * calloc ( size_t nombre , size_t taille ) ;
Exemple: .
Int i , n;
int * Parr ;
printf (" Entrez le nombre d'entiers :");
scanf ( "% d" , & i ) ;
n = sizeof ( int) ;
Parr = (int *) calloc (i, n);
if ( NULL == Parr ) exit ( 1);
//etc 5
Utiliser realloc () pour changer la taille d'un bloc de mémoire. " Realloc " agrandit ou réduit le bloc de mémoire d'octets " de taille " que " ptr " pointé
Prototype :
oid * realloc ( void * ptr , size_t taille ) ;
Exemple: .
Int num1 , num2 ;
int * arr = NULL;
ne {
printf (" Entrez un entier positif :");
scanf ( "% d" , & num1 ) ;
while ( 1> num1 ) ;
arr = (int *) calloc ( num1 , sizeof (int) ) ;
if ( NULL == arr ) exit ( 1);
faire
{ printf (" Entrez un autre nombre entier positif : ");
scanf ( "% d " , & num2 ) ;
while (1 > num2 ) ;
arr = (int *) realloc ( arr, num2 * sizeof ( int) ) ;
if ( NULL == arr ) exit ( 1);
//etc 6
parution d'un bloc de mémoire allouée aux étapes 3 à 5 en utilisant free () . "Free" libère le bloc de mémoire qui commence à l'emplacement de mémoire que «PTR» pointé Prototype :
vide libre ( void * ptr) ;
Exemple: .
Int * buf ;
buf = (int *) malloc ( 100 * sizeof ( int) ) ; free photos ( buf ) ;
//etc