утечка памяти
Вы - код, который не пропускает никакой памяти, потому что вы делаете free(ch);
, что free
выделяет память malloc
внутри функции function1
.
Вы можете проверить это, напечатав адреса указателей, т.е.
char* function1()
{
char *temp;
temp=(char *)malloc(sizeof(char)*10);
printf("temp: %p\n", temp);
return temp;
}
и
ch = function1();
printf("ch: %p\n", ch);
Вы должны увидеть, что оба отпечатка (ch
и temp
) будут печатать по одному и тому же адресу. Таким образом, free(ch);
будет free
правильным malloc
ed фрагментом памяти.
Вы также можете использовать valgrind , чтобы проверить, не выделен ли ваш код free
выделенной памяти.
О предупреждениях
Функции free
, malloc
определены в stdlib.h
.
Добавьте это в свой код:
#include <stdlib.h>
#include <stdio.h>
...
Кроме того, не очень хорошая идея приводить malloc
возвращаемое значение temp=(char *)malloc(...);
.
Прочитайте здесь .