When I alloc memory outside a while loop for example, is it okay to free it inside it ?
Are these two codes equivalent ?
int* memory = NULL;
memory = malloc(sizeof(int));
if (memory != NULL)
{
memory=10;
free(memory);
}
int* memory = NULL;
memory = malloc(sizeof(int));
if (memory != NULL)
{
memory=10;
}
free(memory);
Yes, they are equivalent. You do not have to call
free()if allocation did not succeed.Pay attention, that
memoryis pointer tointand you have to dereference it to assign something to its memory block;