C的小问题哈.

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:06:02
int *pi; 这里不是已经建了个,为什么下面还要为它分内存呢?
pi=(int *)malloc(sizeof(int));
还有malloc这个一般是在什么时候才会用到它?

int *pi 是把pi存放在栈区,这里存放局部变量,系统控制,并在执行后自动回收内存
malloc分配内存则是放在堆区,可以由程序员自己控制大小,何时释放,如果不手动释放则会一直占用内存,这也是malloc为什么和free要成对出现在原因。
不知道这样说你明白了没有

int *pi;只是定义了 ,但并没有分配内存空间
pi=(int *)malloc(sizeof(int)); 是在内存中申请大小为sizeof(int)的空间,然后用pi去指向它。

int *pi; 只是声明了pi是一个指针变量,它可以用来存放整型数的地址,但是具体是哪个整型变量的地址呢?现在还不知道,所以需要你说出pi是指向哪个整型变量的,比如用malloc为它动态分配一个内存
malloc是用来动态分配内存的,做数据结构,比如说链表,树,图之类的,经常要用来申请空间的