我正在玩这段代码:
#include <stdlib.h>
#include <stdio.h>
void function(int *p){
free(p);
}
int main(){
int *i = calloc(3, sizeof(int));
function(i);
i[0] = 'a';
printf("%c\n", i[0]);
return 0;
}
我希望得到一个错误,但它打印了'a',如果'a'被释放,为什么它会打印它?如果 main(),函数(int *p)中发生的事情有什么影响?(如果可以,请解释那个“p”指针发生了什么)
假设我在同一个函数中有这两个:
int *a = malloc(...);
int *b = a;
它们都指向同一块内存,但是当我必须释放它时,我应该对它们都调用 free 还是只调用其中一个?(如果可能,再次解释原因)