Файл: при работе с динамической памятью возникает ошибка: "Cannot find bounds of current function" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Хочу считать из файла строку(до точки), выделять под неё память кусками по 50, потом её вывести. При компиляции ошибок нет, предупреждений тоже. При работе вылет + выводит вначале какую-то случайную белиберду. При отладке пропадает на free, и далее пишет "не могу найти края функции"(Cannot find bounds of current function). Если убрать цикл - всё равно. Если убрать free, то вообще выходит за край мэйна и пишет то же. Что я делаю не так?
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <strings.h>
  4. #include <malloc.h>
  5.  
  6. FILE *f;
  7. char* buff=NULL;
  8. char* s=NULL;
  9. int main()
  10. {
  11. printf("Hello world!\n");
  12. f =fopen("TextFile.txt","r");
  13. buff=malloc(0);
  14. s=malloc(50);
  15. //цикл:
  16. /*while (1==fscanf(f, "%50[^.]",s))
  17. {
  18. realloc(buff, sizeof(buff)+50);
  19. strcat(buff, s);
  20. }*/
  21. //без цикла
  22. fscanf(f, "%50[^.]",s);
  23. realloc(buff, sizeof(buff)+50);
  24. strcat(buff, s);
  25. printf("%s",buff);
  26. free(s);
  27. free(buff);
  28. fclose(f);
  29. return 0;
  30. }

Решение задачи: «Файл: при работе с динамической памятью возникает ошибка: "Cannot find bounds of current function"»

textual
Листинг программы
  1. buff=malloc(0);
  2. // ...
  3. realloc(buff, sizeof(buff)+50);

Объяснение кода листинга программы

  1. buff - это переменная типа void*, которая указывает на блок памяти, выделенный динамически. Значение переменной buff не определено.
  2. 0 - это значение, которое передается в функцию malloc в качестве первого аргумента. Эта функция выделяет блок памяти размером в 0 байт.
  3. sizeof(buff) - это значение, которое передается в функцию realloc в качестве второго аргумента. Оно определяет новый размер блока памяти, который должен быть выделен.
  4. 50 - это значение, которое добавляется к размеру блока памяти, выделенного функцией malloc. Это делается для того, чтобы выделить достаточно места для данных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы