Je me demande pourquoi mon allocation fonctionne. J'ai créé ptr
qui est un pointeur et ptr2
avec un pointeur sur le même emplacement que ptr
.malloc touchant la mémoire non allouée
Voici mon code:
int* ptr = malloc(sizeof(int));
int* ptr2 = ptr;
*ptr2 = 1;
ptr2 = ptr+1;
*ptr2 = 2;
A la fin j'ai un tableau de deux entiers comme ça:
ptr[0] = 1
ptr[1] = 2
Ma question est: pourquoi je peux affecter la valeur 2-ptr2
sans erreur ou avertissements? Je seulement malloc()
-ed pour un endroit entier dans mon tableau, n'est-ce pas?
Le comportement non défini est * undefined *. – EOF
Copie possible de [Pas d'erreur hors limites] (http://stackoverflow.com/questions/9137157/no-out-of-bounds-error) – EOF
Copie possible de [Accède à un tableau global en dehors de son comportement indéfini lié? ] (http://stackoverflow.com/questions/26426910/is-accessing-a-global-array-outside-its-bound-undefined-behavior) –