C语言——动态内存分配

动态内存分配

  谭浩强第五版,p284

  全局变量分配在内存静态存储区

  局部变量分配在内存动态存储区内(称为

  c语言还可在内存申请动态存储区(称为

    使用malloc(size_t size) , realloc(void* arr , size_t size ) , free( void* arr )

 

  区别在于:栈内变量地址:出栈和入栈声明同一变量,变量地址相同

 

    堆内变量:地址不一样

 

测试

  1. 循环声明变量

 

  2.循环调用函数声明变量

 

 

  为何着虑局部变量堆变量地址不同?


数据结构的链表:java可循环声明对象来构造链表。 c语言不能循环声明,只可循环动态申请。

  原因:c语言循环声明变量是栈变量,地址一致。导致链表头指针指向的节点数据会不断改变为最新数据。如图所示:

 

 

  由此推断:动态申请内存意义:获取绝对不一样的地址

 

posted @ 2022-07-08 23:05  remix_alone  阅读(96)  评论(0)    收藏  举报