Adresse et taille d'un tableau statique
Bonjour,
Je cherche un moyen de récupérer la taille d'un tableau statique déclarée comme cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
int foo(char* buffer /* char buffer[1024] */)
{
// Affiche 4 la taille du pointeur mais je voudrais en fait récupérer 1024
printf("sizeof(buf) = %d\n", sizeof(buf));
}
int main()
{
char buffer[1024];
// Affiche bien 1024
printf("sizeof(buf) = %d\n", sizeof(buffer));
foo(buffer);
...
} |
Question 1 : Peux t-on récupérer la taille du buffer sans passer la taille en paramètre à la fonction foo ?
Question 2 : Où est stocké l'adresse et la taille de buffer ? Dans le fichier objet, le fichier binaire ou alors déterminé au runtime ? De manière à pouvoir la récupérer quelque part...
En fait, je voudrais savoir si les adresses (et leur taille dans mon exemple 1024) des tableaux statiques sont stockées dans le fichier main.o ou alors dans le binaire final main.exe ?
Je travaille sous Windows 7, je sais que chaque programme dispose d'un espace de mémoire virtuelle, mais je ne sais pas trop comment cela marche.
Merci d'avance et bonne journée