关于动态内存分配使用时候释放的一些疑问
通过f()函数来修改 i 的值,为什么后面加上 free()函数 会报错呢?#include <stdio.h>
#include <malloc.h>
void f(int ** q)
{
int i = 8 ;
// *q = &i ;//用*q来存放i的地址,最后不能修改i的值,因为i的地址是系统分配的,函数调用完之后会释放掉!
**q = i ;
}
int main(void)
{
int * p ;//定义一个地址变量
p = (int *)malloc(sizeof(int));//给p分配一块动态内存空间
int i = 3 ;
p = &i ;
f(&p);
printf("i = %d\n", i);//输出i的值
// free(p); 为什么不能在这里手动释放分配的动态内存??
return 0;
}