Que signifie “double”?

Comme le suggère le titre, je suis nouveau sur C et une à mi-parcours à venir sous peu. Je suis la révision du passé papiers actuellement et un thème récurrent est le double problème. Je comprends que c'est le processus de l'appel free() sur le même emplacement de mémoire deux fois, mais j'ai un couple de questions que je ne suis pas 100% sûr de la façon de répondre:

Question 1: Quel est le résultat d'un double en C, et pourquoi est-ce un problème?

Ce sera la cause d'une double gratuit:

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

*ptr = 'a';
free(ptr);
free(ptr);

Ma réponse à ce serait, serait-il de retour d'un 0x0 adresse de mémoire et de provoquer une instabilité du système/panne. Aussi, si je me souviens bien, un double peut réellement appeler malloc deux fois, ce qui entraîne un dépassement de la mémoire tampon laissant ainsi le système vulnérable.

Quelle serait la meilleure façon de résumer d'un mot à cette question?

Question 2: Décrire une situation dans laquelle il est particulièrement facile d'introduire une
double gratuit en C?

Je pense que lorsque le passage de pointeurs autour de vous risquez de le libérer dans une fonction, et aussi libre de nouveau sans s'en rendre compte?

Encore une fois, quelle est la "meilleure" façon de résumer cela?

"...would it return a 0x0 memory address..." - c'est à quel sujet? Serait - ce de retour d'un 0x0 adresse de mémoire? Fonction free ne retourne rien.

OriginalL'auteur chris edwards | 2014-01-11