浅谈C与Java

Java的方法调用过程

Java变量:基本类型变量、指针变量

push

  • 压入新的栈桢
  • 在栈桢内部创建局部基本类型变量,接收参数值
  • 在栈桢内部创建局部指针变量,接收参数值后,该指针变量指向堆上实例

pop

  • 弹出栈桢
  • 基本类型变量和指针变量均被销毁
  • 弹出原始栈桢
  • 指针变量被销毁,堆上实例被垃圾回收
  • 当然如果上层栈桢有接收,此实例将不会被回收

C的函数调用过程

C变量:基本类型变量、结构体、枚举、指针变量

push

  • 压入新的栈桢
  • 在栈桢内部创建局部基本类型变量,接收参数值
  • 在栈桢内部创建局部结构体变量,接收参数值(内存重复消耗,未面向对象)
  • 在栈桢内部创建局部枚举变量,接收参数值(内存重复消耗,未面向对象)
  • 在栈桢内部创建局部指针变量,接收参数值后,该指针变量指向原始栈桢上的基本类型变量、结构体、枚举、指针变量

pop

  • 弹出栈桢
  • 该栈桢上的所有变量均被销毁
  • 弹出原始栈桢
  • 原始栈桢上的基本类型变量、结构体、枚举、指针变量被销毁
  • 当然手动申请和初始化的空间不手动处理是无法回收的

总结

C比Java更精致,自己看着用。。。

你可能感兴趣的:(浅谈C与Java)