Donc, j'ai été gâté par python et j'essaie de reprendre C. Je reçois cette faute de seg et je pense que je comprends la raison, mais je ne sais pas pourquoi cela se passe.Erreur de segmentation C erreur
long head = 1; // atleast that is what I was hoping for..
long *localranks = (long*) malloc(n * sizeof(long)); // size_t n = 50;
localranks[head] = 0; // seg fault here..
printf("head is %lu %d\n", head, head);
donne head is 4294967297 1
Ainsi, alors que la tête doit être 1 .. Je devine, il est passé à la valeur des déchets .. Comment puis-je résoudre ce problème?
Avertissement obligatoire: [Dois-je diffuser le résultat de malloc?] (Http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). En ce qui concerne le bug réel, vous devez définir un point d'arrêt sur la ligne de problème et inspecter les valeurs de 'head',' n' et 'localranks'. –
@PaulR merci .. mais comment? – Fraz
Pour ajouter au commentaire de Paul, assurez-vous de vérifier la valeur de retour de 'malloc'. De ce que je vois, malloc doit avoir retourné 'NULL' auquel vous essayez d'accéder. –