什么时候用到malloc?先看例子1:
定义a变量时,系统已经调用malloc分配4个字节内存给a。这时,&a可能会得到一个固定地址0x00020010(所有地址都是32位,即8个字节的,一个字节=2个16进制位数)
例子2:
这个例子,一开始p不是直接指向一个已经被malloc过的地址,所以要亲自调用malloc来获得内存空间。当p指向的地址被赋予了一个3,大于a的值,就把a的地址传给p,这样,p指针就指向了a变量,*p的内容就是2了。
int a , *p = &a;
定义a变量时,系统已经调用malloc分配4个字节内存给a。这时,&a可能会得到一个固定地址0x00020010(所有地址都是32位,即8个字节的,一个字节=2个16进制位数)
例子2:
int a, *p;
a = 2;
if(p = (int *)malloc(sizeof(int)) ==NULL)
{
perror(malloc);
return;
}
*p = 3;
if(*p>a)
{
p = &a;
}
这个例子,一开始p不是直接指向一个已经被malloc过的地址,所以要亲自调用malloc来获得内存空间。当p指向的地址被赋予了一个3,大于a的值,就把a的地址传给p,这样,p指针就指向了a变量,*p的内容就是2了。