/ / nombre d'éléments et taille de la mémoire dans Allocation de mémoire dynamique - mémoire, dynamique, nombres, allocation, éléments

nombre d'éléments et taille de la mémoire dans Allocation de mémoire dynamique - mémoire, dynamique, nombres, allocation, éléments

J'ai une question sur l'allocation de mémoire dynamique en c ou c ++! Lorsque nous voulons déterminer la taille d'un tableau, nous utilisons sizeof une fonction!

De plus, si nous voulons déterminer le nombre d'éléments dans lesquels un tableau a été créé, nous procédons comme suit:

int a[20];
cout << sizeof(a) / sizeof(a[0]) << endl;

Je me demandais si nous pouvions déterminer le nombre et la taille réelle de la mémoire allouée dynamiquement. J'apprécierais vraiment si vous me dites comment, ou me présentez une référence.

Réponses:

0 pour la réponse № 1

Dans votre code, a[20] est alloué statiquement (dans la pile). La mémoire utilisée est toujours la taille 20 * sizeof(int) et est libéré à la fin de la fonction.

Lorsque vous allouez dynamiquement (dans le tas) un tableau comme celui-ci: int* a = malloc(20*sizeof(int)), c’est votre choix de prendre x quantité de mémoireet remplissez-le comme vous voulez. Il est donc de votre devoir d'augmenter ou de réduire le nombre d'éléments contenus dans votre structure de données. Cette quantité de mémoire est allouée jusqu'à ce que vous la libériez (free(a)).

Quoi qu’il en soit, la taille réelle de la mémoire occupée est toujours la même (dans notre cas 20*sizeof(int)).

Voir là pour plus d'informations sur stack / heap, static / dynamic: Pile, statique et tas en C ++