j'ai quelque chose de ce genre:Segmentation fault tout en utilisant malloc et la prise d'entrée
int n,m;
scanf("%d %d",&m,&n);
int *arr = malloc(sizeof(int)*n*m);
for(int i=0;i<m*n;scanf("%d",arr+i),i++);
maintenant pour dire n = 2 et m = 3, Il accepte les cinq premiers numéros, et donne une erreur de segmentation sur la sixième nombre. J'ai essayé d'imprimer des choses immédiatement après la boucle, mais ce n'est pas imprimé, aucune idée de ce que le problème pourrait être? J'ai utilisé de nombreuses constructions similaires et je n'ai jamais rencontré de problème auparavant. Le problème a été plus tard dans le programme, mais le fait est que j'ai eu un printf immédiatement après la boucle, et il n'a rien imprimé, donc j'ai supposé qu'il devait être ici. Pourquoi le printf n'a-t-il rien imprimé? Cela a-t-il quelque chose à voir avec l'exécution parallèle? Et désolé pour le mauvais format, je suis nouveau à empiler débordement.
Lisez à propos (https [comportement non défini] (https://en.wikipedia.org/wiki/Undefined_behavior) et [débordement de tampon]: // fr .wikipedia.org/wiki/Buffer_overflow). Compilez avec toutes les informations d'avertissement et de débogage ('gcc -Wall -Wextra -g'). ** Utilisez le débogueur ** 'gdb' et [valgrind] (http://valgrind.org/).La prochaine fois que vous posez des questions sur SO, donnez quelques [MCVE] (http://stackoverflow.com/help/mcve). Cette question * corrige mon code * est hors sujet. Lire aussi [documentation] (http://fr.cppreference.com/w/c), notamment de 'malloc' et' scanf' –
"quelque chose de ce genre" .... S'il vous plaît étudier le concept d'un [mcve] . – Yunnosch
Vérifiez dans le débogueur les valeurs (avec un point d'arrêt sur la boucle 'for') de' m', 'n',' arr'. Je suis sûr que vous serez surpris. –