URL: https://linuxfr.org/forums/programmation-c--2/posts/getline-et-realloc-sont-dans-une-boucle Title: getline et realloc sont dans une boucle Authors: tuxg Date: 2011年10月08日T15:27:15+02:00 Tags: Score: -1 Salut, J'ai le code suivant qui compile bien. Mais à son lancement il me donne un segfault. Je lance gdb dessus et je vois que le problème vient de la 65e itérations de la boucle while (au getline). Si le bug apparaissait à la première itération j'aurais compris (enfin j'espère), mais ce qui me chiffonne c'est ce délai de 65 itérations. À noter que si je change ITEM_SIZE_STEP à 10 le problème apparait à la 331e itération, et pour ITEM_SIZE_STEP=100 à la 3301e itération. ```c #include #include #include int main(void) { FILE *fp = stdin; char **items; const unsigned int ITEM_SIZE_STEP = 1; unsigned int itemsSize = ITEM_SIZE_STEP; unsigned int itemLen = 0; unsigned int i = 0; if ((items = (char **) malloc(itemsSize * sizeof(char **))) == NULL) { puts("Couldn't allocate memory for items list"); exit(1); } while (getline(items+i, &itemLen, fp) != -1) { ++i; if (i>= itemsSize) { char **tmpItems; tmpItems = (char **) realloc(items, (itemsSize+ITEM_SIZE_STEP)*sizeof(char **)); if (tmpItems == NULL) { puts("Error"); exit(2); } else { itemsSize += ITEM_SIZE_STEP; items = tmpItems; } } } free(items); return 0; } ```

AltStyle によって変換されたページ (->オリジナル) /