C语言指针用法注意事项
计算机系统中有四个内存区域:1)栈:在栈里面储存一些我们定义的局部变量以及形参;2)字符常量区:主要是储存一些字符常量;3)全局区:在全局区里储存一些全局变量和静态变量;4)堆:堆主要是通过动态分配的储存空间,即以下讲的讲的动态分配内存空间。 定义int型指针int *p,p是用来储存一个地址的值的,我们之所以要为p分配空间是让它有一个明确的指向,比如你现在做好了一个指向方向的路标,但是你并没有让这个路标指向一个确切的方位,这个路标是瞎指的,这样我们就不能够通过它来明确到底哪里是东,哪里是西了。也就是说在计算机的内存里定义了一个指针变量,但是我们并没有让这个变量指示一个确切int类型变量的地址,所以必须要让它有一个明确的指示方向。所以就要通过动态分配内存的方式来认为的规定确定其方向。 当malloc()函数为一个指针变量p分配了地址,当对p结束操作的时候要释放p的内存空间。动态分配的变量时储存在堆里面,但是这个堆的空间不是无限大的,也许当编一个小的程序的时候可能不会产生影响,但是对于那些大的程序,如果不及时释放堆的空间就会发生内存泄露。所谓内存泄露是因为堆的空间被我们动态分配用完了,这样再去使用动态分配堆的空间的时候就没有足够的空间可以使用了,这样就需要占有原来的空间,也就是会把其他的空间来储存我们键入的值,这样会导致原来储存的数据被冲掉,导致了内存泄露。 而且当使用malloc(