Файл: при работе с динамической памятью возникает ошибка: "Cannot find bounds of current function" - C (СИ)
Формулировка задачи:
Хочу считать из файла строку(до точки), выделять под неё память кусками по 50, потом её вывести.
При компиляции ошибок нет, предупреждений тоже. При работе вылет + выводит вначале какую-то случайную белиберду.
При отладке пропадает на free, и далее пишет "не могу найти края функции"(Cannot find bounds of current function). Если убрать цикл - всё равно. Если убрать free, то вообще выходит за край мэйна и пишет то же.
Что я делаю не так?
#include <stdio.h> #include <stdlib.h> #include <strings.h> #include <malloc.h> FILE *f; char* buff=NULL; char* s=NULL; int main() { printf("Hello world!\n"); f =fopen("TextFile.txt","r"); buff=malloc(0); s=malloc(50); //цикл: /*while (1==fscanf(f, "%50[^.]",s)) { realloc(buff, sizeof(buff)+50); strcat(buff, s); }*/ //без цикла fscanf(f, "%50[^.]",s); realloc(buff, sizeof(buff)+50); strcat(buff, s); printf("%s",buff); free(s); free(buff); fclose(f); return 0; }
Решение задачи: «Файл: при работе с динамической памятью возникает ошибка: "Cannot find bounds of current function"»
textual
Листинг программы
buff=malloc(0); // ... realloc(buff, sizeof(buff)+50);
Объяснение кода листинга программы
buff
- это переменная типа void*, которая указывает на блок памяти, выделенный динамически. Значение переменнойbuff
не определено.0
- это значение, которое передается в функциюmalloc
в качестве первого аргумента. Эта функция выделяет блок памяти размером в 0 байт.sizeof(buff)
- это значение, которое передается в функциюrealloc
в качестве второго аргумента. Оно определяет новый размер блока памяти, который должен быть выделен.50
- это значение, которое добавляется к размеру блока памяти, выделенного функциейmalloc
. Это делается для того, чтобы выделить достаточно места для данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д