1.堆(heap),动态分配的内存区域,分配之后需手工释放(new, delete, malloc, free) 这种方式需要分配内存,释放内存,因此可能会造成内存泄露,或者内存碎片的问题. 2.栈(stack),函数调用过程中,产生的本地变量和调用的数据区域 分配.释放简单,只需要移动指针即可:后进先出,也不会出现内存碎片.因此对象的分配,也更适合放在栈上. 但有些时候,对象不能或者不应该放在栈上,包括对象很大,对象的大小在编译时不能确定,对象是函数的返回值,但由于特殊的原因,不应使用对象的值