new创建对象,对象保存在堆还是栈?

new创建对象,对象保存在堆还是栈?

-->堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存

-->栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量



例子:局部变量存放在栈;new函数和malloc函数申请的内存在堆;函数调用参数,函数返回值,函数返回地址存放在栈


堆和栈的区别

  1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其  
  操作方式类似于 数据结构 中的栈。  
  2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回  
  收   。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表 ,呵呵。

使用就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就  
  走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自  
  由度小。    
  使用就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由  
  度大。

你可能感兴趣的:(C++)