C语言指向内存问题

Python014

C语言指向内存问题,第1张

假定这里定义的LinkList是一个指针类型,那么f1、f2、f3都是指针。

f1=f2,是将f2的值(一块内存的地址)赋给f1,即f1和f2的值相等,也就是f1、f2指向同一块内存。

f2->next=f3是将f3的值(一块内存的地址)赋给f2的next指针,即f2的next指针和f3指向同一块内存,这里并非是把指针指向f3,请注意f3是一个指针。

f1=f2不是把f2这块内存中的内容赋给f1,而是把f2存储的内存地址赋给f1,请注意指针存储的是地址。

f2没有指向f3,f2=f3的意义跟f1=f2一样,他们指向同一块内存。

释放空间是指用“动态申请内存函数”申请成功的空间,不是你写的代码占用的空间。你写的代码的可执行文件占用的空间要等程序完全退出后才能自动释放,动态申请的空间在使用完毕后可以用对应的“释放函数”释放,以防止所谓“内存泄漏”——就是把内存空间用完了,程序无法运行下去了。如果只申请不释放,积累多了就会产生内存泄漏问题;在空间申请得较少的情况下也不至于一定产生泄漏,等程序退出时也就自动释放了。但写合格的程序是不能有这种指望的,正确的做法是“申请——成功后使用——使用完后及时释放。

(1)在函数中申明的变量,是局部量。

(2)函数没有被调用时,不给局部量分配空间。此时不占用内存空间。

(3)函数 局部量的生命周期是从调用开始到调用结束。

只有在调用函数时,才临时分配空间,函数调用并执行完毕时,空间就会被释放。

函数调用和执行中,无论是否使用此变量,它都要占用内存空间,有地址。

(4)更精确地说,同变量所在的域(就是一对花括号之间的区域)有关,生命周期从进域开始到出域结束。