-1
Я хочу понять, что free() в c освобождает память или просто удаляет данные в выделенной памяти malloc.освобождение памяти с помощью free()
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
printf("enter the size of n:\n");
scanf("%d", &n);
int* A=(int*)malloc(5*sizeof(int));
int i;
for(i=0; i<n; i++)
{
printf("%d\n", &A[i]);
}
free(A);
printf("\n\n-------------\n\n");
for(i=0; i<n; i++)
{
printf("%d\n", &A[i]);
}
return 0;
}
Тем не менее после того, освобождая его давая тот же адрес А. Что бесплатно() на самом деле?
Что вам нужно знать о 'free' в стандартной библиотеке C, можно найти буквально * тысячи * мест через google-fu. [Здесь хороший] (http://en.cppreference.com/w/c/memory/free), и этот сайт стоит закладок. Это одна из лучших онлайн-ссылок для C (и C++), которые вы, скорее всего, найдете. Что касается вашей программы, вы передали 'A' по значению в' free'. он использует это значение для возврата памяти в диспетчер кучи для повторного использования. Значение 'A' не изменяется (и * не может быть *). После 'free' ваш' A' содержит * висячий указатель *, использование его значения приводит к * неопределенному поведению *. – WhozCraig
Не рождайте результат 'malloc' & friends (или' void * 'вообще). – Olaf