函数内的变量在函数结束时会不会被回收?
计算机不会删数据,你说的临时变量是执行的时候在栈里临时生成的,遇到}符号的时候计算机就释放了该内存,实际是计算机将该块内存改成了未使用,如果没被新数据覆盖,是可以通过地址和解引用运算符获得里面的内容的
为什么写链表时每个节点都要动态分配内存?
因为当某个节点删除时,可以将此节点的内存释放,不再占用内存。
如果是静态的定义变量,则变量不会变动,会一直占用内存,这在大链表的不断删除中会占用很大的内存。
动态分配内存的其它好处:
1.有时候不知道需要多大内存,用直接命名变量的话,可能会不够也可能浪费,而动态分配依据程序的运行来分配内存,更符合要求。
2.本地数组变量是直接存储在栈区的局部变量,它的大小受限,而动态内存分配创造的是一个在堆中的指针数组,它指向栈区的一块内存,它的大小是任意的;
这一块不理解,回头看