豆泥丸 发表于 2016-3-21 10:11:51

:):):):):):):)

荣丰宇 发表于 2016-3-21 10:19:32

heap是堆,stack是栈;
stack的空间由系统自动分配和释放,heap的空间手动分配和释放;
stack空间有限,heap有很大的自由存储区;
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符;
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。

荣丰宇 发表于 2016-3-21 10:20:27

heap是堆,stack是栈;
stack的空间由系统自动分配和释放,heap的空间手动分配和释放;
stack空间有限,heap有很大的自由存储区;
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符;
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。

zdw28578294-599 发表于 2016-3-21 10:25:24

签到签到

逍遥李 发表于 2016-3-21 10:26:46

1、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由操作系统回收,分配方式倒是类似于链表。
2、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;

荣丰宇 发表于 2016-3-21 10:26:49

heap是堆,stack是栈;
stack的空间由系统自动分配和释放,heap的空间手动分配和释放;
stack空间有限,heap有很大的自由存储区;
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符;
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。

huaiqiao 发表于 2016-3-21 10:35:22

1、堆: 一般由程序员分配释放, 若程序员不释放,程序结束时可能由操作系统回收
2、栈:由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。

yuazhang 发表于 2016-3-21 10:37:30

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
  栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
  堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
   堆和栈的区别:
      1、管理方式不同;
  2、空间大小不同;
  3、能否产生碎片不同;
  4、生长方向不同;
  5、分配方式不同;
  6、分配效率不同;

zjg_lizhen 发表于 2016-3-21 10:37:50

.heap是堆,stack是栈。2.stack的空间由操作系统自动分配和释放,heap的空间是程序员申请和释放的

wtliu 发表于 2016-3-21 10:37:50

签到:lol:lol
页: 1 2 3 4 [5] 6 7 8 9 10 11
查看完整版本: 【3.21签到】每日问答——Heap与stack的差别