Comment faire sans et de malloc en C?

Je suis à essayer de comprendre ce qui serait arrivé si j'essaie de libérer un pointeur "du milieu"
regardez, par exemple, le code suivant:

char *ptr = (char*)malloc(10*sizeof(char));

for (char i=0 ; i<10 ; ++i)
{
    ptr[i] = i+10;
}
++ptr;
++ptr;
++ptr;
++ptr;
free(ptr);

- Je obtenir une collision avec une exception non Gérée msg d'erreur.
Je veux comprendre pourquoi et comment les œuvres libres, de sorte que je ne sais pas seulement la façon de l'utiliser, mais aussi être en mesure de comprendre des erreurs étranges et les exceptions et mieux déboguer mon codeץ

Merci beaucoup

  • Il n'y a pas de singulier "Comment ça marche" parce que c'est la mise en œuvre spécifique.
  • Attention, @GMan, il y a une réelle différence entre la mise en œuvre définies (ce qui signifie la mise en œuvre doit documenter et d'agir en conformité avec ce qui est) et indéfinis (ce qui signifie que tout peut arriver, jusqu'à et y compris les singes volant de votre bout). 🙂
  • Je voulais dire "Comment free() travail", pas "qu'est Ce que mon code?" J'ai été de répondre à la question titre.
  • Toutes mes excuses, mal compris la réponse.
  • Peut-être vous obtiendrez les gens avec la volonté de l'UB questions pour mieux écouter si vous avez mentionné que les singes puissent voler dans au lieu de simplement voler.. 😉
  • double possible de Comment faire des malloc() et free() fonctionne?
  • Excusez-moi?

InformationsquelleAutor user238082 | 2009-12-24